转自:http://blog.csdn.net/ultrani/article/details/8176122/
1:地址栏输入和点击url访问浏览器时,chrome下无论请求地址和参数,均经过utf-8编码;非chrome浏览器,其中请求地址用utf-8编码,参数按操作系统编码进行编码(ie下的编码参数部分都不带%)。但参数中含特殊符号时,未确定何特殊符号会被编码。
例子:http://www.google.com/小明|=?param=小明|=
a.上面的url在中文xp的chrome下,发送的请求地址是
http://www.google.com/%E5%B0%8F%E6%98%8E%7C=?param=%E5%B0%8F%E6%98%8E|=
b.在中文xp的firefox下,发送的请求地址是
http://www.google.com/%E5%B0%8F%E6%98%8E%7C=?param=%D0%A1%C3%F7|=
c.在中文xp的ie下,发送的请求地址是
http://www.google.com/%E5%B0%8F%E6%98%8E%7C=?param=С??|=
2:超链接中的请求,请求地址用utf-8编码,参数用页面编码,但是在ie下的参数不带%号。
在上面的例子中,在页面指定utf-8编码下,参数部分会变成:param=%E5%B0%8F%E6%98%8E|=。但ie会变成param=E5B08FE6988E|=。
3:js进行超链接访问时,和超链接情况一致。
4:ajax异步请求时,ie总是用gbk来编码,包括网页路径和参数,非ie和超链接请求一致。
在上面例子中,ie下发送的请求会变成:http://www.google.com/%D0%A1%C3%F7%7C=?param=d0a1c3f7|=
具体测试例子如下:
测试url:http://www.google.com/小明|=?param=小明|= (json异步请求url只截取为相对路径:/小明|=?param=小明|=)
请求头数据使用了fiddle2进行截获。
GET /%E5%B0%8F%E6%98%8E%7C=?param=%E5%B0%8F%E6%98%8E%|= HTTP/1.1 param在chrome下是utf-8编码,但是其他的浏览器都是和系统编码一样
2.超链接访问urlGET /%E5%B0%8F%E6%98%8E%7C=?param=%D0%A1%C3%F7|= HTTP/1.1
3.js location.hrefGET /%E5%B0%8F%E6%98%8E%7C=?param=%D0%A1%C3%F7|= HTTP/1.1
4.ajax访问GET /%E5%B0%8F%E6%98%8E%7C=?param=%D0%A1%C3%F7|= HTTP/1.1
GET /%E5%B0%8F%E6%98%8E%7C=?param=С??|= HTTP/1.1
2.超链接访问urlGET /%E5%B0%8F%E6%98%8E%7C=?param=С??|= HTTP/1.1 param含乱码,经过解析实则D0 A1 C3 F7,是gbk编码的"小明|="
3.js location.hrefGET /%E5%B0%8F%E6%98%8E%7C=?param=С??|= HTTP/1.1 param含乱码,经过解析实则D0 A1 C3 F7,是gbk编码的"小明|="
4.ajax访问GET /%D0%A1%C3%F7%7C=?param=d0a1c3f7|= HTTP/1.1
GET /%E5%B0%8F%E6%98%8E%7C=?param=%E5%B0%8F%E6%98%8E|= HTTP/1.1
2.超链接访问urlGET /%E5%B0%8F%E6%98%8E%7C=?param=%E5%B0%8F%E6%98%8E|= HTTP/1.1
3.js location.hrefGET /%E5%B0%8F%E6%98%8E%7C=?param=%E5%B0%8F%E6%98%8E|= HTTP/1.1
4.ajax访问GET /%E5%B0%8F%E6%98%8E%7C=?param=%E5%B0%8F%E6%98%8E|= HTTP/1.1
GET /%E5%B0%8F%E6%98%8E%7C=?param=С??|= HTTP/1.1
2.超链接访问urlGET /%E5%B0%8F%E6%98%8E%7C=?param=小明|= HTTP/1.1 param是utf-8编码的"小明|="
3.js location.hrefGET /%E5%B0%8F%E6%98%8E%7C=?param=小明|= HTTP/1.1 param是utf-8编码的"小明|="
4.ajax访问GET /%D0%A1%C3%F7%7C=?param=d0a1c3f7|= HTTP/1.1