日本語などの文字を「%E3%81%82」のようなパーセントエンコードに変換したり、その逆に読める文字へ戻したりします。UTF-8だけでなく、古いサイトで使われるShift_JIS・EUC-JPにも対応。文字コードの自動判定、二重エンコードの検出、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を貼るとドメイン・パス・クエリパラメータに分解し、パラメータを表で確認できます。
%XX を含む文字列や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 を使いましょう。下の表は記号ごとの違いです。
| 文字 | Component | URI | フォーム形式 | 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で入力した「〜」「−」「‖」なども、見た目が同じ文字として変換します。