URL的合法字符
URL的合法字符表示再瀏覽器的地址欄中不會被轉義的字符,有兩種:
- URL元字符:分號(;),逗號(’,’),斜杠(/),問號(?),冒號(:),at(@),&,等號(=),加號(+),美元符號($),井號(#)
- 語義字符:a-z,A-Z,0-9,連詞號(-),下划線(_),點(.),感嘆號(!),波浪線(~),星號(*),單引號(),圓括號(()`)
當輸入的字符不符合以上的字符時,瀏覽器就會把該字符轉義,規則:根據操作系統的默認編碼,將每個字節轉為百分號(%)加上兩個大寫的十六進制字母。
比如:當再瀏覽器地址欄中輸入www.baidu.com/q=你好
時,會被轉義成例如www.baidu.com/q=%E6%98%A5%E8%8A%82
類似的字符串,瀏覽器才會讀取。
JavaScript的四個URL編碼/解碼方法:
encodeURI
將元字符和語義字符之外的字符都進行轉義,一般用於知道該URL只用於完整的URL時使用
encodeURIComponent
將除了語義字符之外的字符進行轉義,包括元字符,因此,它的參數通常是URL的路徑或參數值,而不是整個URL。
比如說,要在谷歌中搜索www.baidu.com/q=5&name
時,若使用encodeURI,&字符並不會被轉義,從而改變其真正的URL。
decodeURI
還原轉義后的URL,是encodeURI方法的逆運算。
decodeURIComponent(此方法可以還原被轉義的 url)
還原轉義后的URL片段。是encodeURIComponent方法的逆運算。