escape, encodeURI, encodeURIComponentjava
1)基本介紹數組
js 對文字進行編碼涉及3個函數:escape,encodeURI,encodeURIComponent,函數
相應3個解碼函數:decodeURI,decodeURIComponent編碼
2)用途url
一、 傳遞參數時須要使用encodeURIComponent,這樣組合的url纔不會被#等特殊字符截斷。 spa
例如:"http://www.baidu.com?name="+encodeURIComponent(value);.net
二、 進行url跳轉時能夠總體使用encodeURIcode
例如:Location.href="/encodeURI"("http://cang.baidu.com/do/s?word=百度&ct=21");orm
三、 js使用數據時能夠使用escapeutf-8
例如:對數據簡單的操做時。
四、 escape對0-255之外的unicode值進行編碼時輸出%u****格式,其它狀況下escape,encodeURI,encodeURIComponent編碼結果相同。
3)區別
一、 encodeURIComponent
將文本字符串編碼爲一個統一資源標識符 (URI) 的一個有效組件。他會將URL的路徑分隔符也編碼,因此,他只適合編碼參數的值
二、 encodeURI
返回編碼爲有效的統一資源標識符 (URI) 的字符串,以上是一個參數組件,而這裏是一個有效的URL,由於他不對URL特定分隔符編碼
三、 escape
某些字符被替換成了十六進制的轉義序列,這個方法不支持被使用,由於壓根就沒有什麼用武之地。
4)經驗
一、 最多使用的應爲encodeURIComponent,它是將中文、韓文等特殊字符轉換成utf-8格式的url編碼,因此若是給後臺傳遞參數須要使用encodeURIComponent時須要後臺解碼對utf-8支持(form中的編碼方式和當前頁面編碼方式相同),後臺是直接使用request.getParameter
獲取,而不須要其餘轉換,然而,後臺能夠使用 java.net.URLEncoder.encode(value,"utf-8")達到與encodeURIComponent(value)相同效果
二、 escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
三、 encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
四、 encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z