JS通過decodeURIComponent函數解碼


在我們調用后台接口的時候,如果后端傳過來的字段是編碼過的,那需要使用decodeURIComponent函數進行解碼顯示

var test1="http://www.jianshu.com/u/2e03543a7d61"

console.log(encodeURIComponent(test1));//編碼
console.log(decodeURIComponent(test1));//解碼

結果輸出:
http%3A%2F%2Fwww.jianshu.com%2Fu%2F2e03543a7d61
http://www.jianshu.com/u/2e03543a7d61

除此之外,在js中還有另外2種進行編解碼的方法escape,encodeURI,對應的解碼函數unescape,decodeURI,區別如下:
1、 傳遞參數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字符截斷。

例如:

2、 進行url跳轉時可以整體使用encodeURI
例如:Location.href=encodeURI(http://cang.baidu.com/do/s?word=百度&ct=21);

3、 js使用數據時可以使用escape
例如:搜藏中history紀錄。

4、 escape對0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結果相同。

最多使用的應為encodeURIComponent,它是將中文、韓文等特殊字符轉換成utf-8格式的url編碼,所以如果給后台傳遞參數需要使用encodeURIComponent時需要后台解碼對utf-8支持(form中的編碼方式和當前頁面編碼方式相同)

escape不編碼字符有69個:,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字符有82個:!,#,$,&,',(,),
,+,,,-,.,/,:,;,=,?,@,,~,0-9,a-z,A-Z
encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,
,~,0-9,a-z,A-Z

總結:
通過對三個函數的分析,我們可以知道:escape()除了 ASCII 字母、數字和特定的符號外,對傳進來的字符串全部進行轉義編碼,因此如果想對URL編碼,最好不要使用此方法。而encodeURI() 用於編碼整個URI,因為URI中的合法字符都不會被編碼轉換。encodeURIComponent方法在編碼單個URIComponent(指請求參數)應當是最常用的,它可以講參數中的中文、特殊字符進行轉義,而不會影響整個URL。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM