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

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

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

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

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

WAP编码问题(二)

从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处理的乱码了。

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

WAP乱码

相关文章:

  • 2022-01-29
  • 2021-07-05
  • 2021-07-17
  • 2021-09-08
猜你喜欢
  • 2021-12-16
  • 2022-12-23
  • 2021-07-07
  • 2021-08-10
  • 2022-12-23
  • 2022-02-19
相关资源
相似解决方案