43

JavaScript では、これらの違いは何ですか?

  1. escape()/unescape()
  2. encodeuri()/decodeuri()
  3. encodeURIComponent()/decodeURIComponent()
4

5 に答える 5

66

視覚に詳しい方のために、 の効果と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") == "é"
于 2016-06-06T10:19:32.393 に答える
43
  • escape— 壊れている、推奨されていない、使用しないでください
  • encodeURI— URLで許可されていない(生の)文字をエンコードします(事前に修正できない場合は、壊れたURIを修正するために使用します)
  • encodeURIComponentencodeURIURI で特別な意味を持つプラス文字として (URI に挿入するデータをエンコードするために使用します)
于 2013-01-14T11:51:41.483 に答える
22

まず第一に、エスケープは推奨されておらず、使用すべきではありません。

エンコードURI()

URL をエンコードする場合は、これを使用する必要があります。URL で許可されていない記号をエンコードします。

encodeURIComponent()

URL のパラメーターをエンコードする場合に使用する必要があります。これを使用して URL 全体をエンコードすることもできます。ただし、再度使用するにはデコードする必要があります。

--

これは重複と言えます。これがSOに関する良い答えです-クレジットはArne Evertssonに送られます: encodeURI/encodeURIComponentの代わりにエスケープを使用することになっているのはいつですか?

そのトピックに関する理由/理由については、多くの詳細があります。

于 2013-01-14T11:56:28.777 に答える
7
  • escape- 非推奨です。使用しないでください。

  • encodeURI- を除くすべての文字を置き換えます
    ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) # a-z 0-9

  • encodeURIComponent- を除くすべての文字を置き換えます
    - _ . ! ~ * ' ( ) a-z 0-9
于 2016-05-19T12:47:21.827 に答える