使用js或者html的a标签改变地址栏的值的时候,比如
<a href="test.aspx?s=男">W3School</a>
这时候,是没问题的,地址栏显示的是“ ?s=男”,在后台接受到的Request.QueryString也是“ 男”。然后在地址栏复制地址粘贴到其他地方,比如QQ里,显示的是“?s= %E4%B8%8D%E9%99%90”,“男”经过 utf8编码方式的url编码就是“%E4%B8%8D%E9%99%90”
但是,假如是我自己在地址栏输入"?s=男",然后敲回车,则地址会变成“?s= %C4%D0”。这个“%C4%D0”是“男”经过 Gb2312编码方式的url编码得到的结果。然后Request.QueryString接受到的就是乱码了,Server.UrlDecode默认貌似应该是 UTF8解码,虽然好像可以用gb3212的方式来解码。
但,关键是只有狐火才会有这样的问题,其他浏览器无论是手动输入还是js改变,都用的是utf8编码方式。难道我要为了一个火狐浏览器,在设置地址的时候和接受Request.QueryString的时候,把编码解码全改成gb2313的?这样感觉很麻烦啊?
而且这个算不算bug呢?有没有必要改呢?我用火狐浏览器使用百度搜索也有这个问题的,随便搜索什么中文关键词,然后在搜索结果页面啥都不改,直接回车,中文关键字会变成GB2312编码后的字符串,然后应该百度后台有处理,发现是乱码,就直接跳回百度搜索首页了。。。。。。
5 个解决方案
#1
我的问题太愚蠢了?
#2
IE6也有这个bug,会在简体中文操作系统上使用时自动使用烦人的gb2312。
大多数(包括高版本的ie)都是用utf8。
大多数(包括高版本的ie)都是用utf8。
#3
你可以搜一下,在差不多10年前的许多帖子,都讨论过如何修改使用ie6的机器的注册表、来改变ie6的行为。
对于 firefox 如何设置我就不知道了。
反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。
对于 firefox 如何设置我就不知道了。
反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。
#4
那我就不管了,反正百度都有这问题,说明不算啥bug。
#5
楼主用的哪个版本的火狐?现在应该修复,刚测试了下,没有异常了
#1
我的问题太愚蠢了?
#2
IE6也有这个bug,会在简体中文操作系统上使用时自动使用烦人的gb2312。
大多数(包括高版本的ie)都是用utf8。
大多数(包括高版本的ie)都是用utf8。
#3
你可以搜一下,在差不多10年前的许多帖子,都讨论过如何修改使用ie6的机器的注册表、来改变ie6的行为。
对于 firefox 如何设置我就不知道了。
反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。
对于 firefox 如何设置我就不知道了。
反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。
#4
那我就不管了,反正百度都有这问题,说明不算啥bug。
#5
楼主用的哪个版本的火狐?现在应该修复,刚测试了下,没有异常了