首頁 >web前端 >js教程 >javascript怎麼對url進行編碼轉換

javascript怎麼對url進行編碼轉換

青灯夜游
青灯夜游原創
2021-04-09 18:56:1312250瀏覽

javascript對url進行編碼轉換的方法:1、使用encodeURI()函數,可把字串當作URI進行編碼;2、使用encodeURIComponent()函數,可把字串當作URI元件進行編碼。

javascript怎麼對url進行編碼轉換

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

專案中url遇到傳參數傳數組物件解析失敗問題,採用轉碼方式解決,但不清楚實際原理,研究了一下JS轉碼解碼。

Javascript語言用於編碼的函數,總共有三個。

  • escape()

  • encodeURI()
  • encodeURIComponent()

三種編碼方式差異:

  • escapeunescape

    escape:不能直接用於URL編碼,它的真正作用是傳回一個字元的Unicode編碼值,因此可對指定的字串進行編碼。
    對除了ASCII字母、數字、標點符號"@ * _ - . /"以外所有的空格符、標點符號、特殊字符以及其他非ASCII字符都會轉化成%xx(16進制數字)格式的字符編碼。即escape不編碼字元有69個:*, ,-,.,/,@,_,0-9,a-z,A-Z。

    對應的解碼函數是unescape();

  • #encodeURIdecodeURI
    **encodeURI()**是Javascript中真正用來對URL編碼的函數。對整個URL進行編碼,除了常見的符號以外,對網址中有特殊意義的符號"; / ? : @ & = $ , #",也不進行編碼。編碼後,輸出符號的utf-8形式,並且在每個位元組前加上%。需注意的是encodeURI()不對單引號編碼。

    對應的解碼函數是decodeURI()

  • encodeURIComponentdecodeURIComponent

    encodeURIComponent用於對URL的組成部分進行個別編碼,而不用於對整個URL進行編碼。因此,在encodeURI()中不被編碼的符號"; / ? : @ & = $ , #",在encodeURIComponent()中統統會被編碼。

    因為encodeURIComponent() 會將更多的字元進行編碼,例如"/"等字元。如果字串裡麵包含了URI的幾個部分的話,不能用這個來進行編碼。否則“/”字元被編碼後將URL顯示錯誤。因此,用於參數的傳遞,參數包含特殊字元可能會造成間斷。

綜上所述:

**escape()**函數用於js對字串進行編碼。不常用

**encodeURI()**用於整個url跳轉

**encodeURIComponent()**用於參數的傳遞,參數包含特殊字元可能會造成間斷。

【推薦學習:javascript高階教學

#

以上是javascript怎麼對url進行編碼轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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