js url encode decode

js encodeURI 和 encodeURIComponent 的區(qū)別

一、共同點

  1. 把字符串作為 URI 進行編碼

  2. 方法不會對 ASCII 字母和數(shù)字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。

二、區(qū)別

1.encodeURI(URIstring):

對在 URI 中具有特殊含義的 ASCII 標點符號,‘不會’進行轉義的:;/?:@&=+$,#

2.encodeURIComponent(URIstring)

對在 URI 中具有特殊含義的 ASCII 標點符號,‘也會’進行轉義的:;/?:@&=+$,#

例如
let url = 'http://www.baidu.com?a=1&c=2#abc123 4 -.!~*';
console.log(url);
// http://www.baidu.com?a=1&c=2#abc123 4 -
.!~*

console.log(encodeURI(url));
// http://www.baidu.com?a=1&c=2#abc123%204%20-_.!~*

console.log(encodeURIComponent(url));
//http%3A%2F%2Fwww.baidu.com%3Fa%3D1%26c%3D2%23abc123%204%20-_.!~*

大多數(shù)使用 encodeURIComponent


一:Js的Url中傳遞中文參數(shù)亂碼問題,重點:encodeURI編碼,decodeURI解碼:

1.傳參頁面
Javascript代碼:

  1. 接收參數(shù)頁面:test02.html

二:如何獲取Url“?”后,“=”的參數(shù)值:

A.首先用window.location.href獲取到全部url值。
B.用split截取“?”后的全部
C.split(“?”)后面的[1]內數(shù)字,默認從0開始計算

三:Js中escape,unescape,encodeURI,encodeURIComponent區(qū)別:

1.傳遞參數(shù)時候使用,encodeURIComponent否則url中很容易被”#”,”?”,”&”等敏感符號隔斷。
2.url跳轉時候使用,編碼用encodeURI,解碼用decodeURI。
3.escape() 只是為0-255以外 ASCII字符 做轉換工作,轉換成的 %u**** 這樣的碼,如果要用更多的字符如 UTF-8字符庫 就一定要用 encodeURIComponent() 或 encodeURI() 轉換才可以成 %nn%nn 這的碼才可以,其它情況下escape,encodeURI,encodeURIComponent編碼結果相同,所以為了全球的統(tǒng)一化進程,在用 encodeURIComponent() 或 encodeURI() 代替 escape() 使用吧!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容