JavaScirpt里有三个用来转义字符串的函数:escape
、encodeURI
和encodeURIComponent
。记住这几个函数的区别不是那么容易,因此这篇文章来总结一下:
escape
能够把大多数英文标点符号替换成对应的十六进制字符,但是面对UNICODE字符的时候,就不是那么够用了,这时候要考虑用encodeURI
。encodeURIComponent
是encodeURI
的一个扩展,区别是前者还会对这些符号进行转义: ,
/
?
:
@
&
=
+
$
。当URL里的参数有特殊字符或者包含中文等非ASCII字符的时候,就需要用encodeURIComponent
来做encode。这是具体的转义的字符表:
escape | encodeURI | encodeURIComponent | |
---|---|---|---|
<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 |