五一前,WAP网站N73手机出现无法正常查询。然后请有N73的朋友试着访问了一下,朋友的可以正常的,看来不是普遍现象。
这事情让我想起了去年五一的时候WAP的编码问题。那时候WAP刚开发完成,也出现了无法查询的问题。主要是URL传输时参数的编码问题。造成在接收的时候无法正常获取查询参数。
比如客户端查询的URL是http://wap.dianping.com/search?key=川菜
传输的大概过程是:查询页面->输入中文字"川菜"->客户端根据相关属性对“川菜”进行编码CodeStream->将编码信息进行传输->服务端根据相关属性解码CodeStream。
出现无法正常显示是因为客户端编码格式和服务器端解码不统一造成的。
正常访问下的编码:
川菜:%e5%b7%9d%e8%8f%9c (类似CS代码中调用这个方法:System.Web.HttpUtility.UrlEncode("川菜"))
实际发生错误的客户端的编码:
先将“川菜”按 UTF-8编码 :川菜(十六进制 川菜)
再将 川菜 编码成 %26%2324029%3b%26%2333756%3b(类似CS代码中调用这个方法:System.Web.HttpUtility.UrlEncode("川菜"))
置于客户端为什么按这个编码也不清楚。所以查询“川菜”结果变成查询“川菜”自然是查不到结果。
解决的办法是将“川菜”解释回“川菜”。
主要原理是:24029 是川的Unicode字符,33756是菜的Unicode字符。只有通过Convert.ToChar(24029),就可以把川字显示出来了。
--=阅读快乐=--
欢迎访问我的新鱼塘 www.pumaboyd.com