RUNWEBTOOLS
日本語
データフォーマット & エンコーディング

URL エンコーディング解説

更新 2026-07-06

検索語が入った URL をコピーすると、空白やアクセント付き文字があるべき場所に %20%C3%A9 のようなものが見えることがよくあります。それが URL エンコーディングの働きです。このガイドはそれが何をするか、なぜ必要か、どの文字がエスケープされるかを説明します。

URL エンコーディングとは

URL エンコーディング — パーセントエンコーディング(percent-encoding) とも呼ばれます — は、そのままでは安全でない、あるいは曖昧になる文字を URL の中で表現する方法です。そうした文字はそれぞれ % に 16 進数のバイト値を続けたものに置き換えられます。空白は %20 に、アンパサンドは %26 になります。

なぜ必要なのか

URL は限られた文字集合しか含められず、その一部には特別な役割があります: ? はクエリ文字列を始め、& はパラメータを区切り、/ はパスセグメントを区切り、# はフラグメントを示します。URL に入れようとする値がこれらのどれかを含むなら、構造ではなくデータとして扱われるようにエンコードしなければなりません。

Search term:  cats & dogs
In a URL:     ?q=cats%20%26%20dogs

エンコードしないと、生の & が新しいパラメータの始まりと読まれ、検索が壊れてしまいます。

予約文字 vs. 非予約文字

  • 非予約(Unreserved) 文字 — 英字、数字、そして - _ . ~ — は常に安全で、決してエンコードが必要ありません。
  • 予約(Reserved) 文字 — ? & / # : @ = のようなもの — は特別な意味を持ち、文字どおりのデータとして使うときはエンコードしなければなりません。
  • それ以外のすべて — 空白、アクセント付き文字、絵文字、そしてほとんどの記号 — はその UTF-8 バイトに基づいてエンコードされ、だから 1 文字が複数の %xx ペアになり得ます。

よくある混同: プラス記号

フォーム送信のクエリ文字列では、空白が %20 ではなく + としてエンコードされることがあります。文脈によってはどちらも「空白」を意味しうるため人々を戸惑わせます — 迷ったら %20 が常に安全です。

URL エンコーディング vs. Base64

この二つは別々の問題を解きます。URL エンコーディングはテキストを URL の中 に置くのに安全にします。Base64バイナリ データをテキストベースのチャネルで運ぶのに安全にします。両者は時に組み合わされますが(Base64URL)、交換可能ではありません。

値をエンコードまたはデコードするには URL エンコーダー を使い、クエリ文字列のすべてのパラメータを分解するには クエリ文字列パーサー がそれらを読みやすいリストに分けてくれます。

データフォーマット & エンコーディング をもっと見る

データフォーマット & エンコーディング のガイドをすべて見る →

このガイドで触れたツール