關於 escape、encodeURI、encodeURIComponent

參考資料:http://hi.baidu.com/flondon/item/983b3af35b83fa13ce9f3291cookie

       http://www.w3school.com.cn/js/jsref_escape.asp函數

 

 

escape() 函數可對字符串進行編碼,這樣就能夠在全部的計算機上讀取該字符串。解碼:unescape()編碼

encodeURI() 函數可把字符串做爲 URI 進行編碼。 解碼:decodeURI()spa

encodeURIComponent() 函數可把字符串做爲 URI 組件進行編碼。解碼:decodeURIComponent()code

 

共同點:ip

這三個函數均採用unicode字符集。unicode

 

不一樣點:字符串

escape是將字符的unicode編碼轉化爲16進制序列(轉義序列,轉義序列(escape sequences)),其不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z。get

encodeURI是將字符的unicode編碼經過UTF-8來表示,其不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z。it

encodeURIComponent也是將字符的unicode編碼經過UTF-8來表示,其與encodeURI的惟一區別就是它們不編碼的字符有所差異,encodeURIComponent不編碼的字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z。

 

使用場景

1. 傳遞參數時(GET方法)須要使用encodeURIComponent,這樣組合的URL纔不會被#、?、&等特殊字符所幹擾。

2. 對URL(URL是一種URI)進行總體編碼時使用encodeURI,這樣就能夠確保URL中的特殊含義字符(#、?、&、etc.)不被編碼。

3. ECMAScript v3中反對對escape()的使用,並建議用encodeURI和encodeURIComponent代替,不過escape()依然被普遍的用於cookie的編碼,由於escape()剛好編碼了cookie中的非法字符而且對路徑中常出現的「/」不進行編碼。

相關文章
相關標籤/搜索