參考資料: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中的非法字符而且對路徑中常出現的「/」不進行編碼。