首頁  >  文章  >  web前端  >  javascript如何實作URL的轉碼與解碼?

javascript如何實作URL的轉碼與解碼?

不言
不言原創
2018-09-14 17:48:046246瀏覽

這篇文章帶給大家的內容是關於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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn