Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->网站设计 ->HTML/DHTML ->wml在文本框中输入中文关键字搜索时,服务端获取到的值总是乱码的解决方法
  相关分类: 
AJAX教程
CSS/CSS2
Dreamweaver
Fireworks
Flash
HTML/DHTML
JavaScript
Phososhop
网页制作
  站内搜索: 
热门文章排行
热门文章排行 常用网页播放器代码(06-05)
HTML基础知识:认识http-equiv属性(04-12)
网页设计颜色代码大全(06-05)
HTML语法详细介绍(04-12)
HTML教程-Frame 的其它属性(04-12)
精采文章排行
精采文章排行 浅议Web网页Form表单设计技巧(06-05)
超级实用的几种表单校验效果收集(06-05)
揭开正则表达式的神秘面纱(06-05)
教你制作GBK与Unicode的对照表(06-05)
常用网页播放器代码(06-05)
  ·超级实用的几种表单校验效果收集·揭开正则表达式的神秘面纱·教你制作GBK与Unicode的对照表·常用网页播放器代码·要速度更要灵活,JFCMS系统功能评测·渐飞CMS普及风暴活动公告·SSI技术—SHTML(生成静态时用的最火)·Google官方讲解NOINDEX、NOFOLLOW、NOARC·一个form两个提交按钮,分别提交到两页面

wml在文本框中输入中文关键字搜索时,服务端获取到的值总是乱码的解决方法

作者:Webmaster   来源:Linuxdby.com   点击:   日期:2007-06-05 [收藏] [投稿]

  IE是否经常中毒?推荐您

wml在文本框中输入中文关键字搜索时,服务端获取到的值总是乱码,该如何解决?

现提供一个客户端对关键字编码,服务端再解析的方法,应该可以完美的解决这一问题。

wml文件:

<?xml version="1.0" encoding="GB2312"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml xml:lang="zh-cn">

<card id="card1" title="卡片1">

<!--提交到其他页面或服务端示例-->

<do type="accept">

输入值:

<input type="text" name="txtKey" maxlength="20"/><br/>

<go href="hol.wmls#check()" method="post">

搜索

</go>

</do>

</card>

</wml>

 

Wmlscript文件(hol.wmls):

extern function check()

{

    var x = WMLBrowser.getVar("txtKey");

    var xx = URL.escapeString(x);

   

    var para = "skey=" + xx;

    WMLBrowser.go("so.aspx?"+para);

}

 

服务端aspx.cs文件内容:

private void Page_Load(object sender, System.EventArgs e)

{

    // 在此处放置用户代码以初始化页面

    string url = Request.RawUrl;

    string key = QryStrUtil( url, "skey");

    key = UnEscapeString (key);

}

另外还有两个方法:

/// <summary>

/// 获取原始Url中的制定参数的值

/// </summary>

/// <param name="sRawUrl">原始Url</param>

/// <param name="sKey">参数</param>

/// <returns>值</returns>

private string QryStrUtil (string sRawUrl, string sKey)

{

    string sValue = string.Empty;

    int index = sRawUrl.IndexOf('?');

 

    if (-1 != index && -1 != sRawUrl.IndexOf('='))

    {

       sRawUrl = sRawUrl.Substring(index + 1,  sRawUrl.Length - index - 1);

 

       string[] asParaInfo = sRawUrl.Split('&');

       string _key = string.Empty;

       foreach(string sParaInfo in asParaInfo)

       {

           if (null == sParaInfo || string.Empty == sParaInfo)

              continue;

 

           index = sParaInfo.IndexOf("=");

           if (-1 == index)

              continue;

 

           _key = sParaInfo.Substring(0, index);

           if (_key == sKey)

           {

              sValue = sParaInfo.Substring(index + 1, sParaInfo.Length - index - 1);

           }

       }

    }

    return sValue;

}

/// <summary>

/// 汉字编码反转换

/// </summary>

/// <param name="s"></param>

/// <returns></returns>

private string UnEscapeString(string s)

{

    string sub1, sub2, sub3;

    while(-1 != s.IndexOf('%'))

    {

       sub1 = s.Substring(0, s.IndexOf('%'));

       sub2 = s.Substring(sub1.Length,6);

       sub3 = s.Remove(0, sub1.Length + sub2.Length);

 

       sub2 = sub2.Remove(0,1);

 

       string[] scode = sub2.Split('%');

       Byte[] bCodes = new byte[scode.Length];

       for(int i=0; i<scode.Length; i++)

       {

           int sh,sl,val;

           string code = scode[i];

           sh = Convert.ToInt32(code.Substring(0,1),16);

           sl = Convert.ToInt32(code.Substring(1,1),16);

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页12 下一页

上一篇:HTML:关闭(离开)浏览器窗口前的 系统提示   下一篇:target=_blank不符合标准?
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·浅议Web网页Form表单设计技巧

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。