区分escape、encodeURI、encodeURIComp

2017-02-15  本文已影响0人  狐尼克朱迪

前言

escape、encodeURI、encodeURIComponent这三个js函数经常被用到,但不是特别清楚他们之间的区别

escape

escape() 函数可对字符串进行编码,如果在ASCII码表中返回ascii值,如果中文返回的是unicode编码。
需要说明的是:该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换

Paste_Image.png

encodeURI 和 encodeURIComponent

两者是对URL编码的方法,但是两者的编码范围不同:

  1. encodeURI方法不会对下列字符编码: ASCII字母、数字、~!@#$&*()=:/,;?+'
  2. encodeURIComponent方法不会对下列字符编码: ASCII字母、数字、~!*()'

所以encodeURIComponent比encodeURI编码的范围更大。

Paste_Image.png

使用场景

1、尽量不用于escape,由于它历史悠久 ,可能达不到要求
2、URL中的参数用encodeURIComponent进行编码,如果含有#、+、=、/等特殊符号时,encodeURI是无效的。

Paste_Image.png

3、对URL进行编码,建议用encodeURI,因为encodeURIComponent会把//进行编码。

Paste_Image.png

参考文章

简单明了区分escape、encodeURI和encodeURIComponent
url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
url参数中有+、空格、=、%、&、#等特殊符号的处理

上一篇 下一篇

猜你喜欢

热点阅读