URLエンコードとは何か、なぜ必要なのか
コラムパーセントエンコーディングの仕組みと実務での使い方を解説
Webページを見ているとき、アドレスバーに %E3%81%82 のような文字列が表示されることがあります。これはURLエンコード(パーセントエンコーディング)と呼ばれる変換です。日本語や特殊文字をURLで安全に扱うための仕組みです。
「なぜこんな変換が必要なのか」——理由を知ると、Webの動作についての理解が深まります。
URLで使える文字と使えない文字
URLで使用できる文字はRFC(インターネット標準仕様)によって厳密に定められています。英数字(A-Z、a-z、0-9)と一部の記号(-、_、.、~)は「非予約文字」として、そのままURLに含めることができます。
一方、?、&、=、#、/などはURLの構造的な意味を持つ「予約文字」です。これらをデータとして含めたいときは、エンコードが必要になります。日本語や絵文字などの非ASCII文字も、そのままではURLに含められません。
パーセントエンコーディングの仕組み
URLエンコードでは、使えない文字を %XX の形式に変換します(XXは16進数2桁)。具体的には文字をUTF-8でバイト列に変換し、各バイトを % と16進数で表します。
| 元の文字 | UTF-8バイト列 | URLエンコード後 |
|---|---|---|
| あ | E3 81 82 | %E3%81%82 |
| スペース | 20 | %20(または +) |
| &(アンパサンド) | 26 | %26 |
| =(イコール) | 3D | %3D |
「あ」は3バイトのUTF-8文字のため、URLエンコード後は %E3%81%82 の9文字になります。
実務でURLエンコードが必要になる場面
- クエリパラメータに日本語を含める場合:検索フォームで日本語を入力してURLを見ると、
?q=%E6%A4%9C%E7%B4%A2のようになります。これはブラウザが自動的にエンコードしているためです。 - APIリクエストを手動で組み立てる場合:プログラムでURLを生成するとき、パラメータ値を手動でエンコードしないと、
&や=が区切り文字として誤解釈されます。 - URLをテキストとして別のURLに含める場合:リダイレクト先URLをパラメータとして渡すとき、URLをそのまま入れると構造が崩れます。
- ファイル名のURLエンコード:日本語ファイル名を含むリンクを生成するとき、エンコードが必要になります。
関連ツール
URLエンコード / デコード →