javascript中的编码函数有三种javascript
escape(string)
encodeURI(string)
encodeURIComponent(string)
相应的解码函数也有如下三种java
unescape(string)
unencodeURI(string)
unencodeURIComponent(string)
以上三种编码函数都是将指定的字符串按照各自的方式转变为浏览器或脚本可识别的形式,常见于对汉字进行操做,避免出现乱码的状况浏览器
escape(string)
string
转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对如下标点符号进行编码:-_./
escape('汉字 你123abcABC'); //"%u6C49%u5B57%20%u4F60123abcABC" escape('-_./'); //"-_./" escape('"'); //"%22" escape(":"); //"%3A"
escape(string)
除字母、数字以及一些特殊字符(-_./
)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为%u
开头的四位十六进制数(%u6C49
),英文标点符号被转换为%
开头的两位十六进制(%20
)encodeURI(string)
string
转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对如下符号进行编码:-_.!~*'/();?:@&=+$,#
encodeURI('汉'); //"%E6%B1%89" encodeURI('汉字 你123abcABC'); //"%E6%B1%89%E5%AD%97%20%E4%BD%A0123abcABC" encodeURI("-_.!~*'/();?:@&=+$,#"); //"-_.!~*'/();?:@&=+$,#" encodeURI('"'); //"%22"
encodeURI(string)
除字母、数字以及一些特殊字符(-_.!~*'/();?:@&=+$,#
)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为三组%
开头的两位十六进制数(%E6%B1%89
),英文标点符号被转换为%
开头的两位十六进制(%20
)encodeURIComponent(string)
string
转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对如下符号进行编码:-_.!~*'()
encodeURIComponent('汉'); //"%E6%B1%89" encodeURIComponent('汉字 你123abcABC'); //"%E6%B1%89%E5%AD%97%20%E4%BD%A0123abcABC" encodeURIComponent("-_.!~*'()"); //"-_.!~*'()" encodeURIComponent('"'); //"%22"
encodeURIComponent(string)
除字母、数字以及一些特殊字符(-_.!~*'()
)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为三组%
开头的两位十六进制数(%E6%B1%89
),英文标点符号被转换为%
开头的两位十六进制(%20
)escape(string)
不能用于对url进行编码,多用于返回字符的Unicode
编码encodeURI(string)
能够对整个url进行编码encodeURIComponent(string)
不能应用于整个url编码,多用于对地址后的参数值进行编码