您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關javascript對url進行編碼轉換的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
javascript對url進行編碼轉換的方法:1、使用encodeURI()函數,可把字符串作為URI進行編碼;2、使用encodeURIComponent()函數,可把字符串作為URI組件進行編碼。
本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
項目中url遇到傳參數傳數組對象解析失敗問題,采用轉碼方式解決,但并不清楚實際原理,研究了一下JS轉碼解碼。
Javascript語言用于編碼的函數,一共有三個。
escape()
encodeURI()
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對url進行編碼轉換的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。