纯牛奶645
纯牛奶645
  • 发布:2018-05-30 17:03
  • 更新:2020-12-08 10:56
  • 阅读:2043

区分escape、encodeURI和encodeURIComponent

分类:Native.js

1.简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。
编码之后的效果是%XX或者%uXXXX这种形式。
其中 ASCII字母、数、@/ ,这几个字符不会被编码,其余的都会。
最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL。*****

2.最常用的encodeURI和encodeURIComponent
对URL编码是常见的事,所以这两个方法应该是实际中要特别注意的。
它们都是编码URL,唯一区别就是编码的字符范围,其中
encodeURI方法不会对下列字符编码 ASCII字母、数字、~!@#$&()=:/,;?+'
encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!
()'
所以encodeURIComponent比encodeURI编码的范围更大
实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。

3.使用
(1)如果只是编码字符串,不和URL有半毛钱关系,那么用escape。
(2)如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。
(3)当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。

参考: https://stackoverflow.com/questions/11294107/how-can-i-send-the-ampersand-character-via-ajax
https://www.zhihu.com/question/21861899

可以读一下 《HTTP 权威指南》的第二章第 4 节——各种令人头疼的字符
http://www.ituring.com.cn/book/844

0 关注 分享

要回复文章请先登录注册

6***@qq.com

6***@qq.com

解决了我的问题,赞
2020-12-08 10:56