なぜURLには%20のような奇妙な文字が含まれているのか?(URLエンコーディングの秘密)
ブラウザからURLをコピーしてメッセンジャーに貼り付けたとき、%EA%B0%80... という文字の羅列に変わってしまったことはありませんか?
具体的には、スペースが %20 に変わります。なぜURLは、文字をそのまま使用せずに、このような複雑な形式に変換する必要があるのでしょうか?
この現象の正式名称は URLエンコーディング または パーセントエンコーディング です。
1. インターネットの初期のルール:ASCII
インターネットが最初に構築されたとき、コンピュータ通信の標準は ASCII でした。ASCIIは、英字、数字、およびいくつかの特殊文字のみを含む7ビット文字セットです。
URL標準(RFC 3986)は、URLで使用できる文字を厳密に制限しました。
- 非予約文字:
A-Z,a-z,0-9,-,_,.,~ - 予約文字:
:,/,?,#,&など(URL構造に使用)
このリストにない文字(スペース、英語以外の文字、その他の記号など)は、システムが理解できるようにASCII互換形式に変換する必要がありました。
2. パーセントエンコーディングの仕組み
変換ルールは単純です。
- 文字のバイト値を16進数で取得します。
- その前に
%記号を付けます。
例:スペース
ASCIIでは、スペースの10進数値は32で、16進数では 20 です。
したがって、スペースは %20 になります。
例:非ASCII文字
絵文字や他の言語の文字のような場合、UTF-8バイトシーケンスがエンコードされます。ある文字がUTF-8で3バイトを占める場合、それは3つのパーセントエンコードされたグループになります(例:✨の場合は %E2%9C%A8)。
3. セキュリティと安定性
URLエンコーディングは、表現だけでなく、セキュリティと安定性にとっても重要です。
例えば、URLパラメータ値に & や = が含まれている場合はどうなるでしょうか?
search?query=A&B
システムはこれを query=A と新しいパラメータ B として誤って解釈する可能性があります。
& を %26 としてエンコードして search?query=A%26B を送信することで、システムはそれを文字通りの '&' として正しく解釈できます。
結論
%20 のような宇宙人のように見える文字列は、実はインターネットの歴史と互換性を維持するための努力の結果なのです。
ブラウザのアドレスバーにはユーザーの利便性のためにデコードされた文字が表示されますが、舞台裏では、パーセント記号が依然としてネットワーク上を忙しく移動していることを忘れないでください。
関連ツールを見る
Pockitの無料開発者ツールを試してみましょう