关于URL编码(escape、encodeURI和encodeURIComponent)

原文地址:
https://segmentfault.com/a/1190000037559131
做者:
Fw恶龙
本文首发于:
思否
JavaScript中的几种方法
1. escape(不推荐使用)
- 不对 ASCII 字母、数字进行编码
- 不对 *@-_+./ 进行编码
- 其余全部的字符都会被转义序列替换
- 返回一个字符的Unicode编码值,在u0000到u00ff之间的符号被转成%xx的形式,其他符号被转成%uxxxx的形式
- 对应的解码函数是unescape()
2. encodeURI
- 不对 ASCII 字母、数字进行编码
- 不对 -_.!~*'();/?:@&=+$,# 这20个ASCII 标点符号进行编码
- 其余全部的字符都会被转义序列替换
- 输出符号的utf-8形式,而且在每一个字节前加上%
- 对应的解码函数是decodeURI()
3. encodeURIComponent
- 不对 ASCII 字母、数字进行编码
- 不对 -_.!~*'() 这9个ASCII 标点符号进行编码
- 其余全部的字符都会被转义序列替换
- 输出符号的utf-8形式,而且在每一个字节前加上%
- 对应的解码函数是decodeURIComponent()
应用场景
- 当只须要对连接进行简单编码(即:连接的参数中不包含-_.!~*'();/?:@&=+$,#)只须要使用encodeURI
- 当连接中所带参数含有特殊符号时(如:?name=P&G、?src=https://segmentfault.com)这时咱们但愿等号右边的参数被彻底编码,需对参数单独使用encodeURIComponent,而后再拼接成完整的连接
- 设置cookie时先对key和value进行encodeURIComponent编码
- 当须要取连接中的参数时,使用decodeURIComponent进行解码
相关连接
欢迎关注本站公众号,获取更多信息