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

JavaScriptのencodeURI()・decodeURI()関数の使い方を徹底解説

JavaScriptには、URL(URI)を安全に扱うための組み込み関数として encodeURI()decodeURI() が用意されています。この記事では、それぞれの役割と実際の使い方をサンプルコード付きで解説します。

encodeURI()関数とは

encodeURI()関数は、URI全体をエンコードするための関数です。日本語やスペースなど、URLにそのまま含めることができない文字をパーセントエンコーディング(%エンコード)に変換します。

ただし、URIの構造上特別な意味を持つ予約文字である以下の文字はエンコードされず、そのまま残ります。

, / ? : @ & = + $ #

これにより、URLの区切り記号やクエリパラメータの構造を壊すことなく、文字列だけを安全にエンコードできます。

decodeURI()関数とは

decodeURI()関数は、encodeURI()によってエンコードされたURIを元の形式に戻す(デコードする)ための関数です。エンコード処理の逆変換を行い、%20などのエスケープシーケンスを読みやすい文字に復元します。

encodeURI()とdecodeURI()のサンプルコード

以下は、ボタンをクリックするとURLのエンコード・デコードを行うJavaScriptの実装例です。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .encode,.decode {
        font-size: 18px;
        font-weight: 500;
    }
</style>
</head>
<body>
<h1>JavaScriptのencodeURI()とdecodeURI()関数</h1>
<button class="encodeUri">ENCODE URI</button>
<button class="decodeUri">DECODE URI</button>
<div class="encode"></div>
<div class="decode"></div>
<h3>
上のボタンをクリックすると、URIのエンコードまたはデコードが実行されます
</h3>
<script>
    let fillEle = document.querySelector(".sample");
    let decodeEle = document.querySelector(".decode");
    let encodeEle = document.querySelector(".encode");
    let url = "https://www.google.com/sample%20link/?img=91gf.jpg&size=451px";
    let encodeUrl;
    document.querySelector(".encodeUri").addEventListener("click", () => {
        encodeUrl = encodeURI(url);
        encodeEle.innerHTML = "Encoded url = " + encodeUrl;
    });
    document.querySelector(".decodeUri").addEventListener("click", () => {
        decodeEle.innerHTML = "Decoded url = " + decodeURI(encodeUrl);
    });
</script>
</body>
</html>

実行結果

上記のコードを実行すると、次のような画面が表示されます。

JavaScriptのencodeURI()・decodeURI()関数の使い方を徹底解説

「ENCODE URI」ボタンをクリックした場合:

URL内のスペースなどが % エンコードに変換され、エンコード済みのURLが表示されます。

JavaScriptのencodeURI()・decodeURI()関数の使い方を徹底解説

「DECODE URI」ボタンをクリックした場合:

エンコードされたURLが元の読みやすい形式に復元されて表示されます。

JavaScriptのencodeURI()・decodeURI()関数の使い方を徹底解説

補足:encodeURIComponent()との違い

似た関数に encodeURIComponent() がありますが、こちらは / ? : @ & = + $ # といった予約文字もすべてエンコードします。URL全体を扱う場合はencodeURI()、クエリパラメータの値などURLの一部を扱う場合はencodeURIComponent()を使うのが一般的です。

  1. JavaScriptのアロー関数(太い矢印関数)とは?基本構文と使い方をわかりやすく解説

    アロー関数(太い矢印関数)とは 」という矢印のような記号を使うことから、「太い矢印関数(Fat Arrow Function)」とも呼ばれています。 従来のfunctionキーワードを使った定義と比べて記述が大幅に簡潔になるほか、thisの扱いがレキシカル(語彙的)になるという特徴があり、現代のJavaScript開発では広く使われています。 基本構文 アロー関数の基本構文は以下のとおりです。 { } 」を記述するだけです。また、処理が1行で済む場合は、波括弧({ })とreturn文を省略して、さらに短く書くこともできます。 a + b; サンプルコード 次のコードは、JavaScr

  2. JavaScriptのcall()とapply()で関数を呼び出す方法をわかりやすく解説

    JavaScriptには、関数の呼び方を柔軟に制御できるメソッドとして call() と apply() が用意されています。どちらも「this」の値を指定しながら関数を実行できる点は共通していますが、引数の渡し方が異なります。 call() と apply() の違い call(): 引数を個別の値(カンマ区切り)として渡します。 apply(): 引数を配列(または配列風オブジェクト)として一括で渡します。 それでは、実際に両方のメソッドを使って関数を呼び出すサンプルコードを見てみましょう。 サンプルコード <!DOCTYPE html> <html lang=ja>