Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->网站设计 ->HTML/DHTML ->正文

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

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

 

           val = sh * 16 + sl;

           bCodes[i] = Convert.ToByte(val.ToString(),10);

       }

       sub2 = Encoding.GetEncoding("gb2312").GetString(bCodes);

       s = sub1 + sub2 + sub3;

    }

    return s;

}

至此,该方法以全部完毕,Page_Load中得到的key就是原输入字符串的原形。

 

――――――――――――――――――――――――――――――――――――
在这里提供EscapeString方法。

 

/// <summary>
/// 汉字编码转换(该方法还不完美,会对字母及数字等编码)

/// </summary>

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

/// <returns></returns>

public string EscapeString(string s)

{

    string res = string.Empty;

    Byte[] bCodes = Encoding.GetEncoding("gb2312").GetBytes(s);

    ASCIIEncoding ascii = new ASCIIEncoding();

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

    {

       int val = bCodes[i];

       val = (val < 0) ? val+256 : val;

       int sh,sl;

       sh = val/16;

       sl = val%16;

 

       res += "%";

       res += Convert.ToString(sh,16);

       res += Convert.ToString(sl,16);

    }

    return res;

}


细心的读者会发现,如果用EscapeString编码,再用UnEscapeString来解码,可能会错误。所以这里,仅对全角及中文字符编码即可。不过这里暂时不需要同时用到这两个方法,在此把这个方法加上,仅是对wmlscript的escapeString方法的原理进行一下说明。

注:该方法的wmlscript解释是。这个函数计算生成s t r i n g的一个新版本。在这个版本中, [ R F C 1 7 3 8 ]规定的特殊字符(非安全字符、保留字符和不可打印字符)被一个十六进制的转义序列取代,给定的字符串可以这样转义;这个函数可以不进行U R L分析。根据[ R F C 1 7 8 3 ]的规定,对于U n i c o d e字符集中编码等于或者小于0 x F F的特殊字符,使用双数字格式的转义序列% x x。
http://www.cnblogs.com/lgamoy/archive/2007/01/03/610806.html



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



上一篇:HTML:关闭(离开)浏览器窗口前的 系统提示   下一篇:target=_blank不符合标准?

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号