URL に特殊文字エンコーディングが必要な理由

URL は HTTP プロトコルを使用してネットワーク上で送信されます。 HTTP 仕様 (およびその前身であるインターネット プロトコル標準) では、URL を US-ASCII 文字のサブセット、特にバイト値が 0x21 から 0x7E までの文字に制限しています。
この範囲外の文字(スペース、アクセント付き文字(é、ñ、ü)、中国語/日本語/韓国語の文字、および多くの記号を含む)は、エンコードなしの URL では安全ではありません。
特にスペースを使用する理由 HTTP では、リクエスト ラインのメソッド、URL、プロトコル バージョンの間の区切り文字としてスペースが使用されます:
GET /search?q=hello world HTTP/1.1サーバーは、「hello」を URL の末尾として認識し、「world」を HTTP バージョン文字列の無効な部分として認識します。 URL が壊れています。
解決策: パーセント エンコーディング (RFC 3986 で定義) は、安全でない文字を安全な %XX 表記に変換します。ここで、XX は 16 進バイト値です。
パーセントエンコーディングの仕組み


UTF-8 のすべての文字は 1 ~ 4 バイトです。パーセント エンコードでは、各バイトが % に変換され、その後に 2 桁の 16 進数が続きます:
| キャラクター | UTF-8バイト | パーセントエンコード |
|---|---|---|
| スペース | 0x20 | %20 |
| # | 0x23 | %23 |
| & | 0x26 | %26 |
| = | 0x3D | %3D |
| / | 0x2F | ]%2F |
| é | 0xC3 0xA9 | %C3%A9 |
| 中 | 0xE4 0xB8 0xAD | %E4%B8%AD |
https://example.com/搜索のような漢字を含むURLは、https://example.com/%E6%90%9C%E7%B4%A2
予約された文字と予約されていない文字

予約されていない文字 (これらは決してエンコードしないでください): A-Z a-z 0-9 - _ 。 ~ これらはすべての URL コンテキストで安全であり、常にエンコードされていない状態で表示される必要があります。
予約文字 (区切り文字ではなくデータとして使用する場合にエンコード): : / ? # [ ] @ ! $ & ' ( ) * + , ; = これらの文字は URL において特別な意味を持ちます。クエリ パラメータ値にリテラル データとして表示される場合はエンコードします。
例 — 検索クエリ URL:
https://example.com/search?q=cats&dogs
これは曖昧です。クエリは「猫」ですか、それとも「猫と犬」ですか?エンコードあり:
https://example.com/search?q=cats%26dogsアンパサンドがクエリ パラメータ区切り文字としてではなく、データとしてエンコードされるようになりました。
ToolDolfen での URL のエンコードとデコード

- URLエンコード・デコードを開きます。
- エンコードするには: 特殊文字を含む URL または URL コンポーネントを貼り付けます。 [エンコード] をクリックします。
- デコードするには: パーセントでエンコードされた URL または文字列を貼り付けて、人間が判読できるオリジナルを表示します。
このツールは、完全な URL と URL コンポーネント (個々のクエリ パラメーター値) の両方を処理します。完全な URL エンコードの場合、予約されていない文字のみがエンコードされます。コンポーネントのエンコードでは、予約文字もエンコードされます。
推奨コンパニオン ガイド
このトピック クラスタの補完的なチュートリアルとユーティリティを探索して、デジタル ワークフローを強化してください: