∈鱼杆 ---我的鱼塘

执着,坚定,友爱,勇敢(www.pumaboyd.com)Live Message

导航

WAP编码问题(二)

Posted on 2008-05-12 09:56  ∈鱼杆  阅读(1290)  评论(0编辑  收藏  举报

今年五一出现的WAP编码问题,和去年出现的雷同,只是到目前还没有找到正确的解码方式。到目前追踪下来的结果发现将“川”从客户端转到服务端成了“Y]”(PS:但这个追踪是有错误的,下面我会谈到在追踪过程中,发现的一些.NET的处理方式)。

我在机器上做了一个实验:(k=中国)

PageA 发送按gb2312编码的 k= %d6%d0%b9%fa

PageB 接收到k 按默认的UTF-8解码。很自然结果就是乱码:"й"

这是我特意制造的乱码,但让我奇怪的是.NET的Request中几个获得Query参数的结果却是不同的。

querystring

从1、2、3中方法中看k的三种不同的值,

1:“k= %d6%d0%b9%fa”是客户端传输过来的编码值。

2:“k=%u0439”目前不清楚如何得到这个值(PS:有知道的请告知一下,Reflector也懒得看啦)。

3:"k=й" 就是通过Server.UrlDeCode的错误解码结果。

这说明了什么呢

1:我们平时使用的Request.QueryString["k"]内部已经对URL参数进行了解码,这就是为什么平时我们多用Server.UrlEncode对参数进行编码,而很少显示的去调用Server.UrlDeCode对参数进行解码。

2:要获取更底层的参数形式请使用Request.Url.OriginalString Request.QueryString.ToString() (PS:比较郁闷这个是.NET2.0的,OriginalString 是2.0新增的。在.NET1.1 请使用这个:Request.Url.AbsoluteUri)

3:我要改写跟踪代码,因为我获得的“Y]”已经是被MS处理的乱码了。

问题先跟踪到这,目前还没有好的解决办法。

Google 标记: WAP编码, WAP乱码