js的三種編碼解碼方法

注意

中文與英文字符不一樣,中文屬於Unicode字符,在內存中佔4個字符,而英文屬於ASCII字符,內存中只佔2個字節。Cookie中使用Unicode字符時須要對Unicode字符進行編碼,不然會亂碼php

1. escape 和 unescape

1.1 escape() 函數可對字符串進行編碼

該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ - _ + . / 。其餘全部的字符都會被轉義序列替換。bash

document.write(escape("Visit W3School!") + "<br />")
document.write(escape("?!=()#%&"))

//結果
Visit%20W3School%21
%3F%21%3D%28%29%23%25%26
複製代碼

注: ECMAScript v3 反對使用該方法,應用使用 decodeURI() 和 decodeURIComponent() 替代它函數

1.2 unescape() 函數可對經過 escape() 編碼的字符串進行解碼

2. encodeURI 和 decodeURI

2.1 encodeURI() 函數可把字符串做爲 URI 進行編碼

不會被編碼的字符:, / ? : @ & = + $ #編碼

var uri="my test.php?name=ståle&car=saab";
document.write(encodeURI(uri)+ "<br>");

//結果
my%20test.php?name=st%C3%A5le&car=saab
複製代碼

2.2 decodeURI()

3. encodeURIComponent 和 decodeURIComponent

3.1 encodeURIComponent() 函數可把字符串做爲 URI 組件進行編碼

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

此方法假定它的參數是 URI 的一部分(好比協議、主機名、路徑或查詢字符串)。所以 encodeURIComponent() 函數將轉義用於分隔 URI 各個部分的標點符號code

document.write(encodeURIComponent("http://www.w3school.com.cn"))
document.write("<br />")
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
document.write("<br />")
document.write(encodeURIComponent(",/?:@&=+$#"))

//結果
http%3A%2F%2Fwww.w3school.com.cn
http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23
複製代碼
相關文章
相關標籤/搜索