一、escape,encodeURI,encodeURIComponent
1. escape 方法描述
對(duì) String 對(duì)象編碼以便它們能在所有計(jì)算機(jī)上可讀
語(yǔ)法:
escape(charstring)
返回:經(jīng)過(guò)Unicode編碼的新字符串
適用: 對(duì)非URL的字符串編碼
說(shuō)明
escape 返回一個(gè)包含了 charstring 內(nèi)容的新的 String 對(duì)象( Unicode 格式), 所有空格、標(biāo)點(diǎn)、重音符號(hào)以及其他非 ASCII 字符都用 %xx 編碼代替,其中 xx 等于表示該字符的十六進(jìn)制數(shù)。
例如,空格返回的是 "%20" 。 字符的值大于 255 的用 %uxxxx 格式存儲(chǔ)。
2. encodeURI 方法
返回編碼為有效的統(tǒng)一資源標(biāo)識(shí)符 (URI) 的字符串。
語(yǔ)法: function encodeURI(URIString : String)
encodeURI 不對(duì)下列字符進(jìn)行編碼:“:”、“/”、“;”和“?”。請(qǐng)使用 encodeURIComponent 對(duì)這些字符進(jìn)行編碼。按字節(jié)轉(zhuǎn)換,格式為%XX,其中 中文為三個(gè)字節(jié)
3. encodeURIComponent 方法
返回編碼為統(tǒng)一資源標(biāo)識(shí)符 (URI) 的有效組件的字符串。
語(yǔ)法 : function encodeURIComponent(encodedURIString : String)
encodeURIComponent 方法將對(duì)所有字符編碼,
請(qǐng)注意,如果該字符串代表一個(gè)路徑,例如 /folder1/folder2/default.html,則其中的斜杠也將被編碼,這樣,當(dāng)該字符串作為請(qǐng)求發(fā)送到 Web 服務(wù)器時(shí)它將是無(wú)效的。如果字符串中包含多個(gè) URI 組件,請(qǐng)使用 encodeURI 方法進(jìn)行編碼。
二、UTF-8,GBK,GB2312
1. UTF8
UTF-8:Unicode TransformationFormat-8bit,允許含BOM,但通常不含BOM。是用以解決國(guó)際上字符的一種多字節(jié)編碼,它對(duì)英文使用8位(即一個(gè)字節(jié)),中文使用24為(三個(gè)字節(jié))來(lái)編碼。
UTF-8包含全世界所有國(guó)家需要用到的字符,是國(guó)際編碼,通用性強(qiáng)。UTF-8編碼的文字可以在各國(guó)支持UTF8字符集的瀏覽器上顯示。
2. GB2312,GBK
GBK是國(guó)家標(biāo)準(zhǔn)GB2312基礎(chǔ)上擴(kuò)容后兼容GB2312的標(biāo)準(zhǔn)。
GBK的文字編碼是用雙字節(jié)來(lái)表示的,即不論中、英文字符均使用雙字節(jié)來(lái)表示,為了區(qū)分中文,將其最高位都設(shè)定成1。GBK包含全部中文字符,是國(guó)家編碼
總結(jié)
簡(jiǎn)單來(lái)說(shuō),unicode、gbk和大五碼就是編碼的值,而utf-8、uft-16之類(lèi)就是這個(gè)值的表現(xiàn)形式。而前面那三種編碼是不兼容的,同一個(gè)漢字,那三個(gè)碼值是完全不一樣的。如"漢"的uncode值與gbk就是不一樣的,假設(shè)unicode為a040、gbk為b030,而uft-8碼,就是把那個(gè)值表現(xiàn)的形式。utf-8碼完全只針對(duì)uncode來(lái)組織的,如果gbk要轉(zhuǎn)urf-8必須先轉(zhuǎn)uncode碼,再轉(zhuǎn)utf-8就OK了。
需要注意的是,Unicode只是一個(gè)符號(hào)集,它只規(guī)定了符號(hào)的二進(jìn)制代碼,卻沒(méi)有規(guī)定這個(gè)二進(jìn)制代碼應(yīng)該如何存儲(chǔ),互聯(lián)網(wǎng)的普及,強(qiáng)烈要求出現(xiàn)一種統(tǒng)一的編碼方式。UTF-8就是在互聯(lián)網(wǎng)上使用最廣的一種unicode的實(shí)現(xiàn)方式。其他實(shí)現(xiàn)方式還包括UTF-16和UTF-32,不過(guò)在互聯(lián)網(wǎng)上基本不用。重復(fù)一遍,這里的關(guān)系是,UTF-8是Unicode的實(shí)現(xiàn)方式之一。