0X01 網(wǎng)址中有漢字
URL http://zh.wikipedia.org/wiki/春節(jié)
IE8仲墨、FireFox
http://zh.wikipedia.org/wiki/%E6%98%A5%E8%8A%82
網(wǎng)址路徑的編碼,用的是utf-8編碼
0X02 查詢字符串中有漢字
URL http://www.baidu.com/s?wd=春節(jié)
IE8
B4 BA BD DA
----GB2312編碼
FireFox
%B4%BA%BD%DA
----GB2312編碼毕箍,在每個(gè)字節(jié)前加了%
查詢字符串的編碼,用的是操作系統(tǒng)的默認(rèn)編碼
0X03 方法中有漢字
在已打開的網(wǎng)頁(yè)上档痪,直接用Get或Post方法發(fā)出HTTP請(qǐng)求
百度
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方法的編碼弧哎,用的是網(wǎng)頁(yè)的編碼
關(guān)鍵在于Accept—Charset的內(nèi)容是GB2312還是UTF-8
0x04 Ajax調(diào)用的URL中有漢字
url = url + "?q=" +document.myform.elements[0].value;
// 假定用戶在表單中提交的值是"春節(jié)"這兩個(gè)字
http_request.open('GET', url, true);
IE
q=%B4%BA%BD%DA
----GB2312編碼
FireFox
q=%E6%98%A5%E8%8A%82
----utf-8編碼
在Ajax調(diào)用中,IE總是采用GB2312編碼(操作系統(tǒng)的默認(rèn)編碼)萌业,而Firefox總是采用utf-8編碼
0X05 Javascript中的編碼函數(shù)
Escape函數(shù)
js中編碼函數(shù)中最古老的一個(gè),Escape不能直接用于URL編碼奸柬,它會(huì)返回一個(gè)字符的Unicode編碼值生年。
需要注意的是
1、Js函數(shù)的輸入和輸出廓奕,默認(rèn)都是Unicode字符.
2抱婉、Escape函數(shù)不對(duì)+進(jìn)行編碼,服務(wù)器會(huì)認(rèn)為是空格(表單提交時(shí)桌粉,會(huì)將空格轉(zhuǎn)換成+)
3蒸绩、現(xiàn)在基本不提倡使用
>javascript:escape("春節(jié)")
<"%u6625%u8282"
對(duì)應(yīng)的解碼函數(shù)是Unescape
EncodeURI函數(shù)
EncodeURI()是Javascript中真正用來對(duì)URL編碼的函數(shù)。