js解碼編碼decodeURI與decodeURIComponent區別


###decodeURI與decodeURIComponent區別

1. 概念:

URI: Uniform ResourceIdentifiers,通用資源標識符

Global對象的encodeURI()和encodeURIComponent()方法可以對URI進行編碼,以便發送給瀏覽器。有效的URI中不能包含某些字符,例如空格。而這URI編碼方法就可以對URI進行編碼,它們用特殊的UTF-8編碼替換所有無效的字 符,從而讓瀏覽器能夠接受和理解。

其中encodeURI()主要用於整個URI(例如,http://www.jxbh.cn/illegal value.htm),而encode-URIComponent()主要用於對URI中的某一段(例如前面URI中的illegal value.htm)進行編碼。它們的主要區別在於,encodeURI()不會對本身屬於URI的特殊字符進行編碼,例如冒號、正斜杠、問號和井字號;而encodeURIComponent()則會對它發現的任何非標准字符進行編碼。來看下面的例子:
var uri="http://www.jxbh.cn/illegal value.htm#start";
//”http: //www.jxbh.cn/illegal%20value .htm#s tart”
alert(encodeURI (uri)):
//”http% 3A%2F%2Fwww.jxbh.cn%2 Fillegal%2 0value. htm%23 start”
alert( encodaURIComponent (uri));

使用encodeURI()編碼后的結果是除了空格之外的其他字符都原封不動,只有空格被替換成了%20。而encodeURIComponent()方法則會使用對應的編碼替換所有非字母數字字符。這也正是可以對整個URI使用encodeURI(),而只能對附加在現有URI后面的字符串使用encodeURIComponent()的原因所在。一般來說,我們使用encodeURIComponent()方法的時候要比使用encodeURI()更多,因為在實踐中更常見的是對查詢字符串參數而不是對基礎URL進行編碼.

經我的觀測,很多網站的cookie在進行編碼的時候,是encodeURIComponent格式的,所以應該使用decodeURIComponent()進行解碼


免責聲明!

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



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