JavaScript では、これらの違いは何ですか?
escape()
/unescape()
encodeuri()
/decodeuri()
encodeURIComponent()
/decodeURIComponent()
JavaScript では、これらの違いは何ですか?
escape()
/unescape()
encodeuri()
/decodeuri()
encodeURIComponent()
/decodeURIComponent()
視覚に詳しい方のために、 の効果とencodeURI()
、一般的に使用される記号 ASCII 文字に対する効果を示す表を次に示します。encodeURIComponent()
escape()
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
もう 1 つの重要な違いは、unescape()
マルチバイト UTF-8 シーケンスを処理しないのに対し、次のdecodeURI[Component]()
ことです。
decodeURIComponent("%C3%A9") == "é"
unescape("%C3%A9") == "é"
escape
— 壊れている、推奨されていない、使用しないでくださいencodeURI
— URLで許可されていない(生の)文字をエンコードします(事前に修正できない場合は、壊れたURIを修正するために使用します)encodeURIComponent
— encodeURI
URI で特別な意味を持つプラス文字として (URI に挿入するデータをエンコードするために使用します)まず第一に、エスケープは推奨されておらず、使用すべきではありません。
エンコードURI()
URL をエンコードする場合は、これを使用する必要があります。URL で許可されていない記号をエンコードします。
encodeURIComponent()
URL のパラメーターをエンコードする場合に使用する必要があります。これを使用して URL 全体をエンコードすることもできます。ただし、再度使用するにはデコードする必要があります。
--
これは重複と言えます。これがSOに関する良い答えです-クレジットはArne Evertssonに送られます: encodeURI/encodeURIComponentの代わりにエスケープを使用することになっているのはいつですか?
そのトピックに関する理由/理由については、多くの詳細があります。
escape
- 非推奨です。使用しないでください。
encodeURI
- を除くすべての文字を置き換えます
; , / ? : @ & = + $ - _ . ! ~ * ' ( ) # a-z 0-9
encodeURIComponent
- を除くすべての文字を置き換えます- _ . ! ~ * ' ( ) a-z 0-9