URI: Uniform ResourceIdentifiers,通用資源標(biāo)識符
Global對象的encodeURI()和encodeURIComponent()方法可以對URI進(jìn)行編碼,以便發(fā)送給瀏覽器。有效的URI中不能包含某些字符,例如空格。而這URI編碼方法就可以對URI進(jìn)行編碼,它們用特殊的UTF-8編碼替換所有無效的字 符,從而讓瀏覽器能夠接受和理解。
其中encodeURI()主要用于整個URI(例如,http://www.jxbh.cn/illegal value.htm),而encodeURIComponent()主要用于對URI中的某一段(例如前面URI中的illegal value.htm)進(jìn)行編碼。它們的主要區(qū)別在于,encodeURI()不會對本身屬于URI的特殊字符進(jìn)行編碼,例如冒號、正斜杠、問號和井字號;而encodeURIComponent()則會對它發(fā)現(xiàn)的任何非標(biāo)準(zhǔn)字符進(jìn)行編碼。來看下面的例子:
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()編碼后的結(jié)果是除了空格之外的其他字符都原封不動,只有空格被替換成了%20。而encodeURIComponent()方法則會使用對應(yīng)的編碼替換所有非字母數(shù)字字符。這也正是可以對整個URI使用encodeURI(),而只能對附加在現(xiàn)有URI后面的字符串使用encodeURIComponent()的原因所在。一般來說,我們使用encodeURIComponent()方法的時候要比使用encodeURI()更多,因為在實踐中更常見的是對查詢字符串參數(shù)而不是對基礎(chǔ)URL進(jìn)行編碼.
經(jīng)我的觀測,很多網(wǎng)站的cookie在進(jìn)行編碼的時候,是encodeURIComponent格式的,所以應(yīng)該使用decodeURIComponent()進(jìn)行解碼
聯(lián)系客服