关于浏览器的地址栏中文编码问题(火狐)

时间:2022-08-27 22:08:27
地址栏的Request.QueryString中,带有中文字符串的时候,火狐浏览器有一个诡异的问题。
使用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。

#3


你可以搜一下,在差不多10年前的许多帖子,都讨论过如何修改使用ie6的机器的注册表、来改变ie6的行为。

对于 firefox 如何设置我就不知道了。

反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。

#4


引用 3 楼 sp1234 的回复:
你可以搜一下,在差不多10年前的许多帖子,都讨论过如何修改使用ie6的机器的注册表、来改变ie6的行为。

对于 firefox 如何设置我就不知道了。

反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。


那我就不管了,反正百度都有这问题,说明不算啥bug。

#5


楼主用的哪个版本的火狐?现在应该修复,刚测试了下,没有异常了

#1


关于浏览器的地址栏中文编码问题(火狐)
我的问题太愚蠢了?

#2


IE6也有这个bug,会在简体中文操作系统上使用时自动使用烦人的gb2312。

大多数(包括高版本的ie)都是用utf8。

#3


你可以搜一下,在差不多10年前的许多帖子,都讨论过如何修改使用ie6的机器的注册表、来改变ie6的行为。

对于 firefox 如何设置我就不知道了。

反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。

#4


引用 3 楼 sp1234 的回复:
你可以搜一下,在差不多10年前的许多帖子,都讨论过如何修改使用ie6的机器的注册表、来改变ie6的行为。

对于 firefox 如何设置我就不知道了。

反正我是懒得设置。因此我在编程时会不得不刻意进行编码,而不再url上出现中文。


那我就不管了,反正百度都有这问题,说明不算啥bug。

#5


楼主用的哪个版本的火狐?现在应该修复,刚测试了下,没有异常了