JS编码和解码,escape()、encodeURI()、encodeURIComponent()区别详解
大纲
JavaScript中有三个对字符串编码方式
编码函数:
escape encodeURI encodeURIComponent
解码函数:
unescape decodeURI decodeURIComponent
1. escape 不是同一类
escape()是对字符串(string)进行编码;
encodeURI、encodeURIComponent 是对URL编码;
编码之后的效果是%XX或者%uXXXX这种形式,其中 ASCII字母、数字、@*/+
,这几个字符不会被编码。
2. encodeURI()和encodeURIComponent()
都是编码URL
区别是编码的字符范围不同
encodeURI:不会对 ASCII字母、数字、~!@#$&*()=:/,;?+’
编码;
encodeURIComponent:不会对 ASCII字母、数字、~!*()’
编码。
例如:
encodeURI('https://www.baidu.com/') //"https://www.baidu.com/"
encodeURIComponent('https://www.baidu.com/') //"https%3A%2F%2Fwww.baidu.com%2F"
可以看到两者区别就是encodeURI
,不转’: / ',encodeURIComponent
可以。