escape/encodeURI/encodeURIComponent的区别?

JavaScirpt里有三个用来转义字符串的函数:escapeencodeURIencodeURIComponent。记住这几个函数的区别不是那么容易,因此这篇文章来总结一下:

  1. escape能够把大多数英文标点符号替换成对应的十六进制字符,但是面对UNICODE字符的时候,就不是那么够用了,这时候要考虑用encodeURI
  2. encodeURIComponentencodeURI的一个扩展,区别是前者还会对这些符号进行转义: , / ? : @ & = + $
  3. 每个函数都有对应的反转义的函数,用来做相反的事情。

这是具体的转义的字符表:

escapeencodeURIencodeURIComponent
<space>20%20%20%
!21%!!
@@@40%
#23%#23%
$24%$24%
%25%25%25%
^%5E%5E%5E
&26%&26%
****
(28%((
)29%))
----
____
=%3D=%3D
+++%2B
:%3A:%3A
;%3B;%3B
....
"22%22%22%
'27%''
\%5C%5C%5C
///%2F
?%3F?%3F
<%3C%3C%3C
>%3E%3E%3E
~%7E~~
[%5B%5B%5B
]%5D%5D%5D
{%7B%7B%7B
}%7D%7D%7D
`%60%60%60