Back

なぜ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. パーセントエンコーディングの仕組み

変換ルールは単純です。

  1. 文字のバイト値を16進数で取得します。
  2. その前に % 記号を付けます。

例:スペース

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 のような宇宙人のように見える文字列は、実はインターネットの歴史と互換性を維持するための努力の結果なのです。

ブラウザのアドレスバーにはユーザーの利便性のためにデコードされた文字が表示されますが、舞台裏では、パーセント記号が依然としてネットワーク上を忙しく移動していることを忘れないでください。

TechURLEncodingWeb

関連ツールを見る

Pockitの無料開発者ツールを試してみましょう