js的三种编码解码方法

注意

中文与英文字符不同,中文属于Unicode字符,在内存中占4个字符,而英文属于ASCII字符,内存中只占2个字节。Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码

1. escape 和 unescape

1.1 escape() 函数可对字符串进行编码

该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

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 标点符号进行编码: - _ . ! ~ * ' ( )

此方法假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号

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
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值