URLエンコードとは?
URLエンコード(パーセントエンコーディング)はURLの特殊文字を%と16進数コードを使って安全な形式に変換する方式です。URLエンコードの仕組みと必要性を解説します。
URLエンコード(パーセントエンコーディング)は、URLの特殊文字をパーセント(%)記号とその文字のASCIIコードを16進数で表した2桁の数字で置き換えるメカニズムです。URLには限られたASCII文字しか使用できず、多くの文字がURL構文で特別な意味を持つため、この変換が必要です。
URLエンコードの仕組み
文字のASCII/Unicode値を調べて16進数に変換することでエンコードされます: • スペース → %20(ASCII 32 = 0x20) • : → %3A(ASCII 58 = 0x3A) • / → %2F(ASCII 47 = 0x2F) • @ → %40 • ? → %3F • # → %23 例: https://example.com/search?q=こんにちは 世界 → https://example.com/search?q=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%E4%B8%96%E7%95%8C
予約文字 vs 非予約文字
URL文字は2つのカテゴリに分類されます: • 非予約文字 — そのまま使用可能:A~Z、a~z、0~9、-、_、.、~ • 予約文字 — URLで特別な意味を持つ:: / ? # [ ] @ ! $ & ' ( ) * + , ; = 予約文字はデータ(構造ではなく)として使用するときはパーセントエンコードが必要です。例えば&を含むクエリパラメータ値は%26としてエンコードする必要があります。
URLエンコードの実際の使用
URLエンコードは常に遭遇しています: • 検索クエリ:google.com/search?q=apiとは(クエリ文字列では+もスペースとして有効) • フォーム送信:ブラウザが送信前に自動的にフォームデータをエンコード • スペースを含むファイルパス:/マイ%20ドキュメント/ファイル.pdf • 非ASCII文字:日本語 → %E6%97%A5%E6%9C%AC%E8%AA%9E • 特殊文字を含むAPIコールのパラメータ
Try it yourself
テキストをエンコード/デコードするURLエンコードについて
URLエンコードはRFC 3986で定義されています。WebはURLで許可されない文字を含むデータを安全に送信するためにURLエンコードに依存しています。URLエンコードがなければ、スペース・アンパサンド・非ラテン文字を含むURLは曖昧か無効になります。現代のブラウザはエンコードを自動的に処理しますが、開発者はAPIの構築やユーザー入力の処理時にこれを理解する必要があります。
FAQ
- %20はなぜスペースを意味するのですか?
- スペース文字のASCIIコードは32で、16進数では20です。URLエンコードは16進数の値の前に%を付けるため、スペースは%20になります。
- URLエンコードとBase64エンコードの違いは何ですか?
- URLエンコードは個々の文字をURLに安全にしながら可読性を保ちます。Base64エンコードは64種類の印刷可能な文字を使ってバイナリデータをテキストに変換します。目的が異なり、出力も異なります。
- URLのスペースには+と%20どちらを使うべきですか?
- URLのクエリ文字列(?key=value)では+もスペースとして伝統的に有効です(フォームエンコーディング)。パス部分(/マイ%20ファイル)では必ず%20を使う必要があります。%20はどこでも機能するため、一貫して使うのがより安全です。