URLエンコード・デコード

日本語などの文字を「%E3%81%82」のようなパーセントエンコードに変換したり、その逆に読める文字へ戻したりします。UTF-8だけでなく、古いサイトで使われるShift_JIS・EUC-JPにも対応。文字コードの自動判定、二重エンコードの検出、URLの分解もできます。変換はすべてブラウザの中だけで行います。

テキスト ⇔ URLエンコード

例:

URLを分解してパラメータを見る

文字コードは上のパネルの設定を使います(「自動判定」ならUTF-8→Shift_JIS→EUC-JPの順に試します)。

このツールでできること

URLに使える文字は、英数字と一部の記号だけと決まっています。日本語やスペースをURLに入れるときは、文字をバイト列に直して1バイトずつ「%+16進数2桁」で書き表します。これがURLエンコード(パーセントエンコーディング)です。検索結果のURLをコピーしたら「%E6%9D%B1%E4%BA%AC」のような長い文字列になった、という経験があれば、それがまさにこの形です。

このツールは、テキストとURLエンコードを入力したそばから相互に変換します。アクセス解析に出てきた読めないURLを日本語に戻す、APIに渡すパラメータを正しくエンコードする、古いShift_JISのサイトへのリンクを作る、といった場面で使えます。URLを貼るとドメイン・パス・クエリパラメータに分解し、パラメータを表で確認できます。

使い方

  1. 左の欄にテキストを入れると、右の欄にエンコード結果が出ます。逆に右の欄へ %XX を含む文字列やURLを貼ると、左に読める文字が出ます。
  2. URLのパラメータの値や検索語をエンコードするなら「encodeURIComponent」、URL全体の日本語部分だけを変換したいなら「encodeURI」を選びます。HTMLフォームの送信と同じ形が必要なら「フォーム形式」にします。
  3. 文字化けしたような結果になるときは、文字コードを「Shift_JIS」や「EUC-JP」に切り替えます。自動判定でもUTF-8として読めなければ、Shift_JIS・EUC-JPの順に試します。
  4. キーワードの一覧などをまとめて変換するときは「1行ずつ変換する」をオンにすると、改行を残したまま行ごとに変換します。
  5. 下のパネルにURLを貼ると、各部分とパラメータの一覧、日本語で読める形のURL、そのまま使えるエンコード済みのURLが出ます。

知っておくと便利なこと

同じ文字でも文字コードで結果が変わる:「あ」はUTF-8では3バイトなので %E3%81%82、Shift_JISでは2バイトで %82%A0、EUC-JPでは %A4%A2 になります。いまのWebはほぼUTF-8ですが、古い掲示板や自治体・企業の古いシステムではShift_JISのURLがまだ使われています。

encodeURIとencodeURIComponentの違い:encodeURI は「URLの区切りとして意味のある記号」(: / ? # & = + など)をそのまま残します。URL全体に使うと区切りが壊れないかわりに、値の中の & や = まで残ってしまいます。パラメータの値には必ず encodeURIComponent を使いましょう。下の表は記号ごとの違いです。

文字ComponentURIフォーム形式RFC 3986
スペース%20%20+%20
&%26&%26%26
=%3D=%3D%3D
+%2B+%2B%2B
/%2F/%2F%2F
?%3F?%3F%3F
#%23#%23%23
:%3A:%3A%3A
!!!%21%21
'''%27%27
( )( )( )%28 %29%28 %29
****%2A
~~~%7E~
%%25%25%25%25

スペースは %20 か +:+ をスペースとみなすのは、HTMLフォームの送信形式(application/x-www-form-urlencoded)のクエリ部分だけの決まりです。パスの中の + は文字どおりの「+」なので、デコード結果がおかしいときは「+ をスペースとして読む」を切り替えてみてください。

二重エンコード:すでにエンコードされた文字列をもう一度エンコードすると、% が %25 になり「%25E3%2581%2582」のような形になります。プログラムで2回変換してしまったときによく起きます。このツールはデコード結果にまだ %XX が残っていると知らせ、もう一度デコードするボタンを出します。

波ダッシュ問題:Shift_JISの「〜」(0x8160)は、Windowsでは全角チルダ(U+FF5E)、Macや古い規格では波ダッシュ(U+301C)と、Unicodeの別の文字に対応づけられてきました。そのため、同じ見た目の文字でもUTF-8では %EF%BD%9E と %E3%80%9C の2通りになります。このツールのShift_JIS・EUC-JPはブラウザと同じWHATWGの対応表(Windows寄り)を使い、Macで入力した「〜」「−」「‖」なども、見た目が同じ文字として変換します。

よくある質問

URLエンコードは暗号化ですか。
違います。誰でも元に戻せる書き換えで、情報を隠す効果はありません。URLに個人情報やパスワードを入れないのは、エンコードしても同じです。
デコードしたら「�」が出ます。
選んだ文字コードとして正しくないバイト列が含まれています。文字コードを「自動判定」にするか、Shift_JIS・EUC-JPを試してください。URLの途中が切れて、文字の途中のバイトだけが残っている場合もあります。
アドレスバーでは日本語なのに、コピーすると % だらけになるのはなぜですか。
ブラウザは見やすさのために日本語で表示していますが、実際に送るURLはエンコードされた形です。コピーすると本来の形が出てきます。下のパネルの「日本語で読めるURL」で読める形に戻せます。
日本語のドメイン名(例:日本語.jp)も変換できますか。
ドメイン名はパーセントエンコードではなく「xn--」で始まるPunycodeという別の方式で表します。下のパネルにURLを貼ると、Punycodeのドメインを日本語に戻して表示します。
入力したURLはどこかに送られますか。
送られません。変換はすべてお使いのブラウザの中で行い、URLへのアクセスもしません。