カテゴリ: JavaScript 更新日: 2026/05/26

JavaScriptで簡単に理解するURLエンコード・デコードの基本ガイド!初心者でもわかるencodeURIとdecodeURIの使い方

JavaScriptのURLエンコード・デコードの基本(encodeURI, decodeURIなど)
JavaScriptのURLエンコード・デコードの基本(encodeURI, decodeURIなど)

先生と生徒の会話形式で理解しよう

生徒

「先生、URLって文字だけじゃなくて記号とかも入ることがありますよね?それを安全に送る方法ってありますか?」

先生

「あります。JavaScriptではencodeURIdecodeURIを使って、URLに使えない文字を変換したり、元に戻したりできます。」

生徒

「それって具体的にはどういう意味ですか?例えばどんな文字を変換するんですか?」

先生

「URLには半角英数字や一部の記号以外は直接使えません。日本語やスペース、記号を送るときにencodeURIで安全な文字列に変換します。」

生徒

「なるほど!それを使うと文字化けせずにURLに含められるんですね?」

先生

「そうです。では、実際の使い方を順番に見ていきましょう。」

1. URLエンコードとは何か?

1. URLエンコードとは何か?
1. URLエンコードとは何か?

URLエンコードとは、URLに使えない文字を安全な形式に変換することです。例えば日本語やスペース、記号などは直接URLに使えないため、%**という形に置き換えます。JavaScriptではencodeURIencodeURIComponentがこの処理に使われます。

2. encodeURIの基本的な使い方

2. encodeURIの基本的な使い方
2. encodeURIの基本的な使い方

encodeURIは、URL全体を安全に送信できる形式に変換します。主にURL全体を変換する場合に使います。例えば日本語を含むURLを送るときです。


const url = "https://example.com/検索?query=JavaScript 入門";
const encodedUrl = encodeURI(url);
console.log(encodedUrl);

https://example.com/%E6%A4%9C%E7%B4%A2?query=JavaScript%20%E5%85%A5%E9%96%80

このように日本語やスペースが安全な文字に変換されます。

3. encodeURIComponentの違いと使い方

3. encodeURIComponentの違いと使い方
3. encodeURIComponentの違いと使い方

encodeURIComponentはURLの一部、例えばパラメータだけを安全にする場合に使います。URL全体を変換すると不都合な場合があります。


const param = "JavaScript 入門";
const encodedParam = encodeURIComponent(param);
console.log(encodedParam);

JavaScript%E5%85%A5%E9%96%80

URL全体ではなく、クエリパラメータなど一部分の文字列を変換する時に便利です。

4. decodeURIで元のURLに戻す方法

4. decodeURIで元のURLに戻す方法
4. decodeURIで元のURLに戻す方法

decodeURIは、encodeURIで変換したURLを元に戻すための関数です。表示用や処理用に元の文字列に復元できます。


const encodedUrl = "https://example.com/%E6%A4%9C%E7%B4%A2?query=JavaScript%20%E5%85%A5%E9%96%80";
const decodedUrl = decodeURI(encodedUrl);
console.log(decodedUrl);

https://example.com/検索?query=JavaScript 入門

これで元の日本語やスペースを含むURLに戻ります。

5. decodeURIComponentでパラメータを復元する

5. decodeURIComponentでパラメータを復元する
5. decodeURIComponentでパラメータを復元する

同じように、encodeURIComponentで変換した文字列を元に戻すにはdecodeURIComponentを使います。


const encodedParam = "JavaScript%E5%85%A5%E9%96%80";
const decodedParam = decodeURIComponent(encodedParam);
console.log(decodedParam);

JavaScript 入門

パラメータ単位で安全にエンコード・デコードが可能です。

6. 実際のURL送信での活用例

6. 実際のURL送信での活用例
6. 実際のURL送信での活用例

フォームから検索キーワードをURLで送る場合を考えます。日本語や特殊文字が含まれると正しく送信できません。encodeURIComponentで安全に変換して送ります。


const searchWord = "JavaScript 基礎";
const url = "https://example.com/search?query=" + encodeURIComponent(searchWord);
console.log(url);

https://example.com/search?query=JavaScript%20%E5%9F%BA%E7%A4%8E

このようにしてURLエンコードを使うと、どんな文字でも安全に送信できます。

7. URLエンコード・デコードの注意点

7. URLエンコード・デコードの注意点
7. URLエンコード・デコードの注意点

注意点として、encodeURIはURL全体向け、encodeURIComponentはパラメータ向けで使い分けることが重要です。また、二重にエンコードしないように注意しましょう。デコードも同様に対応する関数を使います。


const wrongEncoding = encodeURIComponent(encodeURIComponent("JavaScript 入門"));
console.log(decodeURIComponent(wrongEncoding)); // まだ %E5%85%A5%E9%96%80 が残る

JavaScript%E5%85%A5%E9%96%80

二重にエンコードするとデコードが1回では戻らなくなるので注意してください。

8. まとめの前に実践で覚えるポイント

8. まとめの前に実践で覚えるポイント
8. まとめの前に実践で覚えるポイント

JavaScriptでURLを扱うときは、まず何を送るのかを考え、URL全体かパラメータかで関数を選びます。encodeURIdecodeURIは全体用、encodeURIComponentdecodeURIComponentはパラメータ用です。文字化けを防ぎ、安全に通信するための基本として覚えておきましょう。


const baseUrl = "https://example.com/search";
const keyword = "プログラミング 入門";
const finalUrl = baseUrl + "?q=" + encodeURIComponent(keyword);
console.log(finalUrl);

https://example.com/search?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20%E5%85%A5%E9%96%80

このようにして正しくURLを扱えることが、Web開発の基本です。

まとめ

まとめ
まとめ

本記事では、JavaScriptでのURLエンコードとデコードの基本をわかりやすく解説しました。URLには半角英数字以外に日本語やスペース、特殊文字を含めることができません。そのため、encodeURIencodeURIComponentを使って安全に文字列を変換し、逆にdecodeURIdecodeURIComponentで元の文字列に復元する方法を学びました。encodeURIはURL全体を対象に変換する場合に使用し、encodeURIComponentはURLパラメータなど一部分を変換する際に便利です。また、二重にエンコードすると正しくデコードできない点にも注意が必要です。フォームやリンクで日本語や特殊文字を扱う際、これらの関数を正しく使うことで文字化けや通信エラーを防ぐことができます。

実践で覚えるポイント

  • URL全体の変換にはencodeURI、パラメータの変換にはencodeURIComponentを使う。
  • デコードはそれぞれdecodeURIdecodeURIComponentを使う。
  • 二重にエンコードしないよう注意する。
  • フォームや検索キーワードなど動的に生成するURLでも安全に通信できる。
  • 日本語や特殊文字を含むURLを扱う際の文字化け対策として必須。
 const searchKeyword = "JavaScript 入門"; const url = "https://example.com/search?query=" + encodeURIComponent(searchKeyword); console.log(url);
 https://example.com/search?query=JavaScript%20%E5%85%A5%E9%96%80

このコード例のように、パラメータを安全にエンコードするだけで、ユーザーが入力した日本語やスペースを含む文字列を正しく送信できます。WebアプリケーションやAPI連携の際にも応用可能です。

先生と生徒の振り返り会話

生徒

「先生、今日はencodeURIencodeURIComponentdecodeURIdecodeURIComponentの違いと使い方を学びました。URL全体とパラメータの変換で使い分けるんですね。」

先生

「その通りです。全体か一部分かで関数を使い分けることが大切です。間違えて二重にエンコードするとデコードしても戻らないので注意しましょう。」

生徒

「なるほど、二重にエンコードすると文字が残っちゃうんですね。フォームから送信するときに必ずencodeURIComponentを使うと安全に送れるんですね。」

先生

「そうです。特に検索キーワードやユーザー入力をURLに含めるときは必須です。日本語や記号も問題なく送信できます。」

生徒

「今日の内容を覚えておくと、文字化けや通信エラーを防げるんですね。これで安心してWeb開発でURLを扱えそうです。」

先生

「その通りです。URLエンコード・デコードはWeb開発の基本中の基本です。正しい使い方を理解しておくことで、文字化けや不具合を未然に防げます。」

関連記事:
カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptの関数に型をつける方法(引数・戻り値)を初心者向けに徹底解説!
New2
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
New3
TypeScript
TypeScriptでExpressのミドルウェアを型安全に定義する方法!バックエンド開発の初心者向け解説
New4
JavaScript
JavaScriptのfilterメソッドで条件に合う要素を抽出する方法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptでフォームの値を取得する方法を徹底解説!valueプロパティの使い道
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptでHTML5バリデーションAPIを使いこなす!初心者でもわかるフォーム入力チェック
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.4
Java&Spring記事人気No4
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptで要素を削除する方法(removeChild, removeなど)
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptの配列操作でよくあるエラーとその解決法まとめ
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptでオブジェクト指向のカプセル化を学ぶ!初心者でもわかるクラスとプロパティの保護方法