かるツール

Learn

URLエンコードとは?URLデコードとは?

URLエンコードとURLデコードの意味、必要になる理由、%E3%81%82 や %20 の読み方を整理します。

約6分
URLパーセントエンコードWeb基礎

1. ざっくり言うと何か

URLエンコードは、URLの中でそのまま扱えない文字や、区切り文字と誤解されやすい扱いにくい文字を「%」と16進数の組み合わせへ変換することです。たとえば「あ」は UTF-8 のバイト列をもとに %E3%81%82 のように表されます。

URLデコードはその逆で、%E3%81%82 や %20 のような表記を、人が読める文字へ戻すことです。アクセスログ、共有されたURL、クエリパラメータの中身を読むときによく使います。

2. なぜ必要になったのか

URLには、区切り文字として特別な意味を持つ文字があります。たとえば ? はクエリの始まり、& はパラメータの区切り、= は名前と値の区切りとして使われます。

もし検索キーワードやフォーム入力の中に日本語、空白、&、= などがそのまま入ると、URLの構造なのか値なのか区別しにくくなります。そこで「これはただの文字です」と安全に渡すためにURLエンコードを使います。

3. どういう仕組みで動くのか

基本は、文字をUTF-8などのバイト列にし、URL内でそのまま置けないバイトを %XX の形へ置き換える仕組みです。XX は16進数です。

たとえば日本語の「あ」は、内部的には複数のバイトで表されます。そのバイト列をURLで安全に扱える形へ置き換えると、%E3%81%82 のような表記になります。

どの文字を変換するかは、URL全体を扱うのか、検索キーワードやパラメータの値だけを扱うのかで変わります。まずは「URLにそのまま置くと紛らわしい文字を、安全な表記へ置き換える」と捉えると理解しやすいです。

  • 「かる ツール」→ %E3%81%8B%E3%82%8B%20%E3%83%84%E3%83%BC%E3%83%AB
  • 空白はこのサイトのツールでは %20 として扱います。
  • application/x-www-form-urlencoded では空白を + と表す流儀もあります。

4. よくある誤解

URLエンコードは暗号化ではありません。%E3%81%82 のように読みにくく見えても、誰でもデコードすれば元の文字を読めます。秘密情報を守る目的では使えません。

また、URL全体を常にエンコードすればよいわけでもありません。多くの場合、変換するのはURL全体ではなく、検索語、名前、リダイレクト先などの「値」の部分です。

  • URLエンコードは「安全にURLへ入れるための表記変換」であり、セキュリティ対策そのものではありません。
  • Base64とは目的が違います。Base64はバイナリやテキストを別の文字集合で表すエンコードで、URLの区切り文字処理とは別問題です。
  • 同じ空白でも、文脈によって %20 と + のどちらで表されるかが変わります。

5. 実際に使われる場面

検索フォームのキーワードをURLに入れるとき、キャンペーンURLのパラメータを作るとき、APIへクエリ文字列を渡すときなどに使われます。

逆にURLデコードは、ログに残ったURL、アクセス解析のパラメータ、共有された長いURLの中身を確認するときに便利です。