javascript對url進行編碼轉換的方法:1、使用encodeURI()函數,可把字串當作URI進行編碼;2、使用encodeURIComponent()函數,可把字串當作URI元件進行編碼。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
專案中url遇到傳參數傳數組物件解析失敗問題,採用轉碼方式解決,但不清楚實際原理,研究了一下JS轉碼解碼。
Javascript語言用於編碼的函數,總共有三個。
escape()
encodeURIComponent()
三種編碼方式差異:
escape 和unescape:
escape:不能直接用於URL編碼,它的真正作用是傳回一個字元的Unicode編碼值,因此可對指定的字串進行編碼。
對除了ASCII字母、數字、標點符號"@ * _ - . /"以外所有的空格符、標點符號、特殊字符以及其他非ASCII字符都會轉化成%xx(16進制數字)格式的字符編碼。即escape不編碼字元有69個:*, ,-,.,/,@,_,0-9,a-z,A-Z。
對應的解碼函數是unescape();
#encodeURI 和decodeURI:
**encodeURI()**是Javascript中真正用來對URL編碼的函數。對整個URL進行編碼,除了常見的符號以外,對網址中有特殊意義的符號"; / ? : @ & = $ , #",也不進行編碼。編碼後,輸出符號的utf-8形式,並且在每個位元組前加上%。需注意的是encodeURI()不對單引號編碼。
對應的解碼函數是decodeURI()。
encodeURIComponent 和decodeURIComponent
encodeURIComponent用於對URL的組成部分進行個別編碼,而不用於對整個URL進行編碼。因此,在encodeURI()中不被編碼的符號"; / ? : @ & = $ , #",在encodeURIComponent()中統統會被編碼。
因為encodeURIComponent() 會將更多的字元進行編碼,例如"/"等字元。如果字串裡麵包含了URI的幾個部分的話,不能用這個來進行編碼。否則“/”字元被編碼後將URL顯示錯誤。因此,用於參數的傳遞,參數包含特殊字元可能會造成間斷。
綜上所述:
**escape()**函數用於js對字串進行編碼。不常用
**encodeURI()**用於整個url跳轉
**encodeURIComponent()**用於參數的傳遞,參數包含特殊字元可能會造成間斷。
【推薦學習:javascript高階教學】
#以上是javascript怎麼對url進行編碼轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!