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

Fw恶龙

梵高-野玫瑰

原文地址: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()

应用场景

  1. 当只需要对链接进行简单编码(即:链接的参数中不包含-_.!~*'();/?:@&=+$,#)只需要使用encodeURI
  2. 当链接中所带参数含有特殊符号时(如:?name=P&G、?src=https://segmentfault.com)这时我们希望等号右边的参数被完全编码,需对参数单独使用encodeURIComponent,然后再拼接成完整的链接
  3. 设置cookie时先对key和value进行encodeURIComponent编码
  4. 当需要取链接中的参数时,使用decodeURIComponent进行解码

相关链接

阅读 589

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视。

191 声望
11 粉丝
0 条评论

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视。

191 声望
11 粉丝
文章目录
宣传栏