encodeURI、encodeURIComponent和escape用法

admin發表於2017-04-12

標題中的三個方法都是用來對字串進行編碼的,當然它們之間是有區別的。

下面就對它們的作用分別做一下介紹,它們的區別自然也就知道了。

先來看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
console.log(encodeURI("螞蟻部落"));
console.log(encodeURIComponent("螞蟻部落"));
console.log(escape("螞蟻部落"));

上面僅僅是對三個方法的演示,下面分別做一下介紹。

一.encodeURI()和encodeURIComponent()方法:

這兩個方法確實比較接近,所以就放在一起介紹了。

(1).encodeURI()不編碼的字元有82個:

[JavaScript] 純文字檢視 複製程式碼
!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

(2).encodeURIComponent()不編碼字元有71個:

[JavaScript] 純文字檢視 複製程式碼
!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

(3).encodeURI()方法通常是給整個網址編碼:

[JavaScript] 純文字檢視 複製程式碼
console.log(encodeURI("http://www.softwhy.com/"));

(4).encodeURIComponent主要給url的query引數編碼:

[JavaScript] 純文字檢視 複製程式碼
console.log("http://www.softwhy.com/test.php?antzone="+encodeURIComponent("螞蟻部落"));

上面兩個方法對應的解碼方法分別是:

decodeURI()

decodeURIComponent()

二.escape()方法:

此方法通常不能夠用來對URI進行編碼,對URI進行編碼的話推薦用上面兩個。

escape()返回一個包含了charstring內容的字串值( Unicode格式)。

所有空格、標點、重音符號以及其他非 ASCII 字元都用 %xx 編碼代替,xx 等於表示該字元的十六進位制數。例如,空格返回的是 "%20" 。如果字元值大於255的則用%uxxxx 格式表示。

此方法不編碼的字元有69個:

[JavaScript] 純文字檢視 複製程式碼
*,+,-,.,/,@,_,0-9,a-z,A-Z

此方法對應的解碼方法是unescape()。

相關文章