パーセントエンコーディング(URL エンコーディング)とは?
URL エンコーディングガイド
URL は元々、ASCII 文字の中でも限られた集合だけをそのまま使えるように設計されています。スペースや非ラテン文字、あるいは ?・& のような特殊文字をアドレスに直接入れると、ブラウザやサーバーによって解釈が異なったり、壊れたりすることがあります。これを防ぐために使うのが パーセントエンコーディング(percent-encoding)、いわゆる URL エンコーディングです。
%XX 表記の意味
パーセントエンコーディングは、安全でない文字をそのバイト値(16 進数)に置き換え、先頭に % を付けます。たとえばスペースは %20、疑問符は %3F になります。非ラテン文字のように複数バイトからなる文字は、UTF-8 のバイトごとに %XX が連続して付きます。
- スペース →
%20 ?→%3F&→%26あ(UTF-8) →%E3%81%82
なぜ UTF-8 基準なのか
現代のウェブは事実上 UTF-8 を標準として扱います。ブラウザの encodeURIComponent も文字列を UTF-8 バイトに変換してから、各バイトを %XX に変換します。そのため同じ文字であればエンコード結果は常に同じであり、デコードすれば原文が正確に復元されます。
このサイトのエンコード/デコードツールはブラウザ内蔵の関数をそのまま使うので、入力した値はサーバーに送信されず、その場で変換されます。
いつ必要になるか
検索語を含むリンク、クエリパラメータの値、別の URL の値として入れるリダイレクト先 URL など、アドレスの一部に任意の文字列を差し込むとき にパーセントエンコーディングが必要です。値をエンコードしないと、& や = が区切り文字と誤認され、パラメータが途中で切れてしまうことがあります。