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は自然にしばしばそうであるよう)を除いて、サーバに。