URLエンコード・デコードとは?
URLに使えるのは英数字と一部の記号だけなので、日本語や空白はパーセントエンコーディング(例:日 → %E6%97%A5)に変換する必要があります。アドレスバーでは日本語に見えるURLをコピーすると %E6%9D%B1… のような長い文字列になるのはこのためです。
このツールはJavaScriptのencodeURIComponentとencodeURIの両方に対応し、不正な%表記があれば何文字目が問題かを表示します。
使い方
- エンコードかデコードを選びます。
- 検索語やパラメータの値ひとつを変換するなら値(Component)、URL全体ならURL全体(URI)を選びます。
- 入力するとすぐに結果が表示されます。⇅ 結果を入力へを押すと逆方向に変換し直せます。
- 下のURL解析にアドレスを入れると、プロトコル・ホスト・パス・クエリパラメータを分けて表示します。
encodeURIComponent と encodeURI の違い
| 文字 | encodeURIComponent | encodeURI |
|---|---|---|
| 日本語、空白 | エンコード | エンコード |
| : / ? # & = + , ; @ $ | エンコード | そのまま |
| A-Z a-z 0-9 - _ . ! ~ * ' ( ) | そのまま | そのまま |
クエリの値に & や = が含まれると、encodeURI ではパラメータが正しく分かれません。値には必ずComponent方式を使いましょう。
空白は %20?それとも +?
URLの標準(RFC 3986)では空白は %20 です。ただしHTMLフォームの送信形式(application/x-www-form-urlencoded)では空白を + で表します。Google検索のURLの q=東京+ラーメン がその例です。このようなURLをデコードするときは+ を空白にをオンにしてください。
よくある質問
デコードすると「UTF-8の文字として解釈できない」と表示されます。
古いサイトでは日本語をShift_JISやEUC-JPでエンコードしており、1文字が %93%FA のような2バイトで表されます。このツールと現在のブラウザの標準はUTF-8なので、Shift_JISのURLは解釈できません。
URLを2回エンコードするとどうなりますか?
% が %25 に変わり、%25E6%2597… のようになります。結果に %25 が多く見えたら二重エンコードされているので、2回デコードしてみてください。
日本語ドメインもエンコードされますか?
ドメインはパーセントエンコーディングではなく、Punycode(xn-- で始まる形式)に変換されます。たとえば「日本.jp」は xn--wgv71a.jp になり、URL解析ではその形で表示されます。