encodeURIComponent()
またはを使用しないでくださいencodeURI()
。あなたは使うべきですfixedEncodeURIComponent()
とfixedEncodeURI()
MDNのマニュアルによると、。
について encodeURI()
...
URLの最新のRFC3986に従い、角かっこが予約され(IPv6の場合)、URLの一部となる可能性があるもの(ホストなど)を形成するときにエンコードされない場合は、次のコードスニペットが役立ちます。
function fixedEncodeURI(str) {
return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}
について encodeURIComponent()
...
RFC 3986(!、 '、(、)、および*を予約する)を厳守するために、これらの文字に正式なURI区切りの使用法がない場合でも、以下を安全に使用できます。
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
それで、違いは何ですか? fixedEncodeURI()
そして、fixedEncodeURIComponent()
同じ値のセットを変換しますが、fixedEncodeURIComponent()
このセットを変換します+@?=:*#;,$&
。このセットは、で使用されるGET
パラメータ(&
、+
等)、アンカータグ(#
)、ワイルドカードタグ(*
)、電子メール/ユーザ名部品(@
)、など。
たとえば-あなたが使用している場合はencodeURI()
、user@example.com/?email=me@home
正しく秒を送信しません@
互換性を扱うお使いのブラウザ(Chromeは自然にしばしばそうであるよう)を除いて、サーバに。