這篇文章帶給大家的內容是關於javascript如何實現URL的轉碼與解碼?有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
1. escape 和 unescape
escape()不能直接用於URL編碼,它的真正作用是傳回一個字元的Unicode編碼值。
採用unicode字元集對指定的字串除0-255以外進行編碼。所有的空格符、標點符號、特殊字元以及更多有聯繫非ASCII字元都將被轉換成%xx格式的字元編碼(xx等於該字元在字元集表裡面的編碼的16進位數字)。例如,空格符對應的編碼是 。
escape不編碼字元有69個:*, ,-,.,/,@,_,0-9,a-z,A-Z。
escape()函數用於js對字串進行編碼,不常用。
編碼:
escape('http://www.baidu.com?name=zhang@xiao@jie&order=1')
結果:"http://www.baidu.com?name=zhang@xiao@jie&order=1"
escape('張')
結果:"%u5F20"
解碼:
unescape("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")
結果:"http://www.baidu.com?name=zhang@xiao@jieorder=1"
unescape("%u5F20")
結果:"張"
2. encodeURI 和decodeURI
把URI編碼字串採用UTF-8格式轉換成escape各式的字串。
encodeURI不編碼字元有82個:!,#,$,&,',(,),*, ,,,-,.,/,:,;,=,?,@,_,~, 0-9,a-z,A-Z
encodeURI()用於整個url編碼
編碼:
encodeURI('http://www.baidu.com?name=zhang@xiao@jie&order=1')
結果:"http://www.baidu.com?name =zhang@xiao@jie&order=1"
解碼:
decodeURI("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")
結果:"http://www.baidu.com?name=zhang@xiao@jie&order=1"
3. encodeURIComponent 和decodeURIComponent
與encodeURI()的區別是,它用於對URL的組成部分進行個別編碼,而不用於對整個URL進行編碼。
因此,"; / ? : @ & = $ , #",這些在encodeURI()中不被編碼的符號,在encodeURIComponent()中統統會被編碼。至於具體的編碼方法,兩者是一樣。把URI字串採用UTF-8編碼格式轉換成escape格式的字串。
encodeURIComponent() 用於參數的傳遞,參數包含特殊字元可能會造成間斷。
編碼:
encodeURIComponent('http://www.baidu.com?name=zhang@xiao@jie&order=1')
結果:"http:// www.baidu.com?name=zhang@xiao@jie&order=1"
#解碼:
decodeURIComponent("http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1")
結果:"http://www.baidu.com?name=zhang @xiao@jie&order=1"
總結:
escape()不能直接用於URL編碼,它的真正作用是傳回一個字元的Unicode編碼值。例如"春節"的返回結果是%u6625%u8282,,escape()不對" "編碼
#主要用於漢字編碼,現在已經不提倡使用。
encodeURI()是Javascript中真正用來對URL編碼的函數。
編碼整個url位址,但對特殊意義的符號"; / ? : @ & = $ , #",也不進行編碼。對應的解碼函數是:decodeURI()。
encodeURIComponent()
能編碼"; / ? : @ & = $ , #"這些特殊字元。對應的解碼函數是decodeURIComponent()。
我想要傳遞帶&符號的網址,所以用encodeURIComponent()
以上是javascript如何實作URL的轉碼與解碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!