中文與英文字符不一樣,中文屬於Unicode字符,在內存中佔4個字符,而英文屬於ASCII字符,內存中只佔2個字節。Cookie中使用Unicode字符時須要對Unicode字符進行編碼,不然會亂碼php
該方法不會對 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() 替代它函數
不會被編碼的字符:, / ? : @ & = + $ #
編碼
var uri="my test.php?name=ståle&car=saab";
document.write(encodeURI(uri)+ "<br>");
//結果
my%20test.php?name=st%C3%A5le&car=saab
複製代碼
該方法不會對 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
複製代碼