在JavaScript中,这两者之间有什么区别?
escape() / unescape()encodeuri() / decodeuri()encodeURIComponent() / decodeURIComponent()发布于 2016-06-06 10:19:32
对于视觉方面而言,下面的表格显示了encodeURI()、encodeURIComponent()和escape()对常用符号ASCII字符的影响:
Char encUrI encURIComp escape
* * * *
. . . .
_ _ _ _
- - - -
~ ~ ~ %7E
' ' ' %27
! ! ! %21
( ( ( %28
) ) ) %29
/ / %2F /
+ + %2B +
@ @ %40 @
? ? %3F %3F
= = %3D %3D
: : %3A %3A
# # %23 %23
; ; %3B %3B
, , %2C %2C
$ $ %24 %24
& & %26 %26
%20 %20 %20
% %25 %25 %25
^ %5E %5E %5E
[ %5B %5B %5B
] %5D %5D %5D
{ %7B %7B %7B
} %7D %7D %7D
< %3C %3C %3C
> %3E %3E %3E
" %22 %22 %22
\ %5C %5C %5C
| %7C %7C %7C
` %60 %60 %60另一个重要的区别是unescape()不处理多字节UTF-8序列,而decodeURI[Component]()处理:
decodeURIComponent("%C3%A9") == "é"
unescape("%C3%A9") == "é"发布于 2013-01-14 11:51:41
escape -坏掉了,不推荐,不要使用encodeURI -对URL中不允许(raw)的字符进行编码(如果不能事先修复它们,则使用它来修复已损坏的URI)encodeURIComponent -作为在URI中具有特殊意义的encodeURI加字符(使用它来编码数据以插入URI)发布于 2013-01-14 11:56:28
首先,逃逸是被废弃的,不应该被使用。
encodeURI()
当您要对URL进行编码时,应该使用它来编码URL中不允许的符号。
encodeURIComponent()
当您想要对URL的参数进行编码时,应该使用它,您也可以使用它来编码整个URL。但是你必须对它进行解码才能再次使用它。
--
我会说这是个复制品。以下是阿恩·埃弗特松( answer )的最佳答案:When are you supposed to use escape instead of encodeURI / encodeURIComponent?
关于为什么/为什么不在这个话题上,有很多细节。
https://stackoverflow.com/questions/14317861
复制相似问题