wml在文本框中输入中文关键字搜索时,服务端获取到的值总是乱码,该如何解决?现提供一个客户端对关键字编码,服务端再解析的方法,应该可以完美的解决这一问题。
wml文件:
| 以下为引用的内容: <?xml version="1.0" encoding="GB2312"?> Wmlscript文件(hol.wmls): extern function check() |
| 以下为引用的内容: private void Page_Load(object sender, System.EventArgs e) |
另外还有两个方法:
| 以下为引用的内容: /// <summary> if (-1 != index && -1 != sRawUrl.IndexOf(‘=‘)) string[] asParaInfo = sRawUrl.Split(‘&‘); index = sParaInfo.IndexOf("="); _key = sParaInfo.Substring(0, index); sub2 = sub2.Remove(0,1); string[] scode = sub2.Split(‘%‘); val = sh * 16 + sl; |
至此,该方法以全部完毕,Page_Load中得到的key就是原输入字符串的原形。在这里提供EscapeString方法。
| 以下为引用的内容: /// <summary> 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。