URL編碼

URL:統(tǒng)一資源定位符

標(biāo)準(zhǔn)格式:

scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]

scheme //有我們很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。

host? //HTTP服務(wù)器的IP地址或者域名

port#? //HTTP服務(wù)器的默認(rèn)端口是80,這種情況下端口號可以省略。如果使用了別的端口,必須指明,例如tomcat的默認(rèn)端口是8080 http://localhost:8080/

path? //訪問資源的路徑

url-params? //所帶參數(shù)

query-string? ? //發(fā)送給http服務(wù)器的數(shù)據(jù)

anchor //錨點(diǎn)定位

為什么要進(jìn)行URL編碼

1.會引起歧義:比如在URL中我們以鍵值對的格式攜帶參數(shù),每對鍵值對之間用&分隔,加入我們的參數(shù)中本身含有&,那么在解析的時(shí)候顯然會出錯(cuò)

2.非法字符:URL采用的是ASCII編碼,所以非ASCII編碼出現(xiàn)在URL中也會導(dǎo)致解析錯(cuò)誤,例如中文

編碼的幾種方式

escape():這個(gè)方法不同于后兩種方法,它是對字符串進(jìn)行編碼,

此方法現(xiàn)在幾乎被淘汰,此不贅述

encodeURI():這個(gè)方法是真正對URL進(jìn)行編碼的,它著眼于整個(gè)URL進(jìn)行編碼,不會對 ASCII字母 、數(shù)字 、 ~ ! @ # $ & * ( ) = : / , ; ? + ' 進(jìn)行編碼.

例如:

encodeURI("http://www.cnblogs.com/season-huang/some other thing");

//"http://www.cnblogs.com/season-huang/some%20other%20thing";

此處對空格進(jìn)行了編碼,而不會對其他ASCII碼進(jìn)行編碼

對應(yīng)解碼函數(shù):decodeURL()

encodeURIComponent()著眼于對單個(gè)的參數(shù)進(jìn)行編碼,"; / ? : @ & = + $ , #",這些在encodeURI()中不被編碼的符號,在encodeURIComponent()中統(tǒng)統(tǒng)會被編碼

對應(yīng)解碼函數(shù):decodeURLComponent()

原文作者:baiying

原文鏈接:http://www.itdecent.cn/p/61a02862ea7f

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容