URL エンコード・デコード

日本語をパーセントエンコードしたり、%E6%9D%B1 のような文字列を元の日本語に戻したりできます。URL を貼り付ければ、ホストやパス、クエリパラメータを 1 つずつ分解して表示します。


URL の分解

URL エンコード・デコードの使い方

  1. 「エンコード」か「デコード」を選びます。
  2. エンコード時は、パラメータの値など一部分なら encodeURIComponent、URL 全体なら encodeURI を選びます。
  3. フォーム送信データ(application/x-www-form-urlencoded)を扱うときは「空白を + にする」をオンにします。
  4. URL の中身を確認したいときは「URL を貼り付け」欄に入力すると、各部分とデコード済みのパラメータが一覧表示されます。

URL エンコード(パーセントエンコーディング)とは

URL に使える文字は RFC 3986 で英数字と一部の記号に限られています。日本語や空白、& や ? のように URL の中で特別な意味を持つ記号は、UTF-8 のバイトごとに %XX(XX は 16 進数)の形で表します。これがパーセントエンコーディング、いわゆる URL エンコードです。

日本語は 1 文字が UTF-8 で 3 バイトになるため、「東京」は %E6%9D%B1%E4%BA%AC のように 1 文字あたり 9 文字に増えます。ブラウザのアドレスバーでは日本語に見えていても、コピーして LINE やメールに貼るとこの形に変わるのはそのためです。

encodeURIComponent と encodeURI の違い

encodeURIComponent は英数字と - _ . ! ~ * ' ( ) 以外をすべてエンコードします。検索キーワードやリダイレクト先 URL など、URL の「一部分」に入れる値に使います。「a&b=c」は a%26b%3Dc になるので、値の中の & でパラメータが分断されることがありません。

encodeURI は : / ? # & = など URL の構造を表す記号を残し、日本語や空白など URL に使えない文字だけをエンコードします。完成した URL に日本語が含まれている場合に使います。パラメータの値に encodeURI を使うと & がそのまま残り、パラメータが 2 つに割れてしまうのはよくある間違いです。

デコードしても文字化けする場合

このツールは UTF-8 としてデコードします。古い日本語サイトや一部のシステムでは、URL が Shift_JIS や EUC-JP でエンコードされていることがあり、その場合は「UTF-8 として正しくありません」と表示されます。たとえば「東京」は UTF-8 では %E6%9D%B1%E4%BA%AC、Shift_JIS では %93%8C%8B%9E になります。

また、空白が + で表されている URL(フォーム送信や一部の検索結果)は、「空白を + にする」をオンにしてデコードすると正しく空白に戻ります。

広告やキャンペーンの URL を確認する

utm_source、utm_medium、utm_campaign などの計測用パラメータや、gclid、fbclid といったクリック ID が付いた長い URL も、下の URL 分解欄に貼り付ければパラメータごとに 1 行で表示されます。配信前のキャンペーン URL のチェックや、リダイレクト URL に隠れた本当の遷移先の確認に便利です。

よくある質問

URL の %20 は何ですか?

半角スペースをエンコードしたものです。ほかにも %2F は /、%3F は ?、%26 は &、%3D は = を表します。

日本語の URL が %E3%81… のように長くなるのはなぜですか?

日本語は UTF-8 で 1 文字 3 バイトになり、1 バイトごとに %XX の 3 文字で表すためです。デコードすれば元の日本語に戻り、リンクとしてはどちらの形でも同じページを開きます。

「正しいパーセントエンコードではありません」と表示されます。

% の後には 16 進数 2 桁が必要です。「50%オフ」のように % そのものを含めたいときは %25 と書きます。エラーメッセージに問題のある文字の位置を表示しています。

URL 全体をエンコードすればいいのですか?

パラメータの値をそれぞれ encodeURIComponent でエンコードし、& と = でつなぐのが正しい方法です。完成した URL を encodeURIComponent にかけると :// や / までエンコードされ、リンクとして使えなくなります。

PHP の urlencode と同じ結果にするには?

PHP の urlencode は空白を + に変換します。encodeURIComponent を選んで「空白を + にする」をオンにすると一致します。rawurlencode は空白を %20 にするので、オフのままで同じ結果になります。

入力した内容は送信されますか?

いいえ。エンコード、デコード、URL の分解はすべてブラウザ内で行われます。

最終更新: ソースコードを見る