URL:統一資源定位符
標準格式:
scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]
scheme //有我們很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host //HTTP服務器的IP地址或者域名
port# //HTTP服務器的默認端口是80,這種情況下端口號可以省略。如果使用了別的端口,必須指明,例如tomcat的默認端口是8080 http://localhost:8080/
path //訪問資源的路徑
url-params //所帶參數
query-string //發送給http服務器的數據
anchor //錨點定位
為什么要進行URL編碼
一個東西如果需要編碼,說明它自身是不適合傳輸的
具體看一下哪些情況要進行URL編碼
1.會引起歧義:比如在URL中我們以鍵值對的格式攜帶參數,每對鍵值對之間用&
分隔,加入我們的參數中本身含有&
,那么在解析的時候顯然會出錯
2.非法字符:URL采用的是ASCII編碼,所以非ASCII編碼出現在URL中也會導致解析錯誤,例如中文
編碼的幾種方式
-
escape()
:這個方法不同于后兩種方法,它是對字符串進行編碼,
此方法現在幾乎被淘汰,此不贅述 -
encodeURI()
:這個方法是真正對URL進行編碼的,它著眼于整個URL進行編碼,不會對 ASCII字母 、數字 、 ~ ! @ # $ & * ( ) = : / , ; ? + ' 進行編碼.
例如:
encodeURI("http://www.cnblogs.com/season-huang/some other thing");
//"http://www.cnblogs.com/season-huang/some%20other%20thing";
此處對空格進行了編碼,而不會對其他ASCII碼進行編碼
對應解碼函數:decodeURL()
-
encodeURIComponent()
著眼于對單個的參數進行編碼,"; / ? : @ & = + $ , #",這些在encodeURI()中不被編碼的符號,在encodeURIComponent()
中統統會被編碼
對應解碼函數:decodeURLComponent()