JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのencodeURIComponent()関数とは?使い方をわかりやすく解説

JavaScript の encodeURIComponent() 関数は、URI を表す文字列を引数として受け取り、文字列中の特殊文字を 1〜4 桁の数字とエスケープシーケンス(パーセントエンコーディング)に置き換えてエンコードします。

URL には直接含めることができない日本語や一部の記号などを安全に扱えるようにするため、クエリパラメータの生成などでよく利用される関数です。

構文

基本的な構文は次のとおりです。

encodeURIComponent('https://www.qries.com/');

使用例

実際のコード例を見てみましょう。

<html>
<head>
    <title>JavaScript Example</title>
</head>
<body>
    <script type="text/javascript">
        var result1 = encodeURIComponent('https://www.qries.com/');
        document.write(result1);
        document.write("<br>");
        var result2 = encodeURIComponent('https://www.tutorialspoint.com/');
        document.write(encodeURIComponent(result2));
    </script>
</body>
</html>

実行結果

http%3A%2F%2Fwww.qries.com%2F
http%253A%252F%252Fwww.tutorialspoint.com%252F

結果の解説

1つ目の出力では、:(コロン)が %3A に、/(スラッシュ)が %2F にそれぞれ置き換えられています。

一方、2つ目の出力では、すでにエンコード済みの文字列に対してさらに encodeURIComponent() を適用しているため、% 記号自体が %25 に変換されています。このような「二重エンコード」は意図しない挙動の原因になることがあるので、実装時には注意が必要です。

エンコードされない文字

encodeURIComponent() はすべての文字をエンコードするわけではなく、次の文字はそのまま保持されます。

  • 英字(A〜Z、a〜z)
  • 数字(0〜9)
  • 記号:- _ . ! ~ * ' ( )

URL 全体を対象にする場合は encodeURI()、パラメータなどの部分文字列を対象にする場合は encodeURIComponent() を使うのが一般的な使い分けです。

  1. JavaScriptの関数プロトタイプとは?仕組みと使い方を解説

    JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに

  2. JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説

    JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン