0X01 网址中有汉字
URL http://zh.wikipedia.org/wiki/春节
IE8、FireFox
http://zh.wikipedia.org/wiki/%E6%98%A5%E8%8A%82
网址路径的编码,用的是utf-8编码
0X02 查询字符串中有汉字
URL http://www.baidu.com/s?wd=春节
IE8
B4 BA BD DA
----GB2312编码
FireFox
%B4%BA%BD%DA
----GB2312编码,在每个字节前加了%
查询字符串的编码,用的是操作系统的默认编码
0X03 方法中有汉字
在已打开的网页上,直接用Get或Post方法发出HTTP请求
百度
http://www.baidu.com/s?wd=%B4%BA%BD%DA
----GB2312编码
谷歌
http://www.google.com/search?s=%E6%98%A5%E8%8A%82
----utf-8编码
GET和POST方法的编码,用的是网页的编码
关键在于Accept—Charset的内容是GB2312还是UTF-8
0x04 Ajax调用的URL中有汉字
url = url + "?q=" +document.myform.elements[0].value;
// 假定用户在表单中提交的值是"春节"这两个字
http_request.open('GET', url, true);
IE
q=%B4%BA%BD%DA
----GB2312编码
FireFox
q=%E6%98%A5%E8%8A%82
----utf-8编码
在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是采用utf-8编码
0X05 Javascript中的编码函数
Escape函数
js中编码函数中最古老的一个,Escape不能直接用于URL编码,它会返回一个字符的Unicode编码值。
需要注意的是
1、Js函数的输入和输出,默认都是Unicode字符.
2、Escape函数不对+进行编码,服务器会认为是空格(表单提交时,会将空格转换成+)
3、现在基本不提倡使用
>javascript:escape("春节")
<"%u6625%u8282"
对应的解码函数是Unescape
EncodeURI函数
EncodeURI()是Javascript中真正用来对URL编码的函数。