Difference between escape(), encodeURI(), encodeURIComponent()
回答1
For the visually minded, here's a table showing the effects of encodeURI(), encodeURIComponent() and escape() on the commonly-used symbolic ASCII characters:
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
Another vital difference is that unescape() does not handle multi-byte UTF-8 sequences whereas decodeURI[Component]() does:
decodeURIComponent("%C3%A9") == "é"
unescape("%C3%A9") == "é"
回答2
escape— broken, deprecated, do not useencodeURI— encodes characters that are not allowed (raw) in URLs (use it to fix up broken URIs if you can't fix them beforehand)encodeURIComponent— asencodeURIplus characters with special meaning in URIs (use it to encode data for inserting into a URI)