URLデコード
パーセントエンコードされたURLやクエリ文字列を貼り付けると、入力中にデコード結果を表示します。日本語などのUTF-8文字もそのまま読めます。
URLエンコードされたテキストをデコード
URLで運べる文字は限られているため、それ以外はパーセントエンコードされます。スペース、アクセント記号、日本語などラテン文字以外の文字、そして&、=、?のようにURLで特別な意味を持つ文字です。ログファイル、リダイレクトのパラメーター、UTMタグ、APIのエラーにはこうしたシーケンスがあふれており、デコードするのが実際に何が送られたのかを確かめる一番の近道です。
このページは、入力と同時にデコードするよう設定したURLエンコード・デコードツールを開きます。処理はすべてブラウザー内で行われます。
よく見るエンコード済みシーケンス
| エンコード後 | デコード後 | 補足 |
|---|---|---|
%20または+ | スペース | +がスペースを意味するのはフォームデータの場合だけ |
%2F | / | パラメーター値の中のスラッシュ |
%3F %3D %26 | ? = & | データとして使われたクエリの構文文字 |
%25 | % | 文字どおりのパーセント記号、または二重エンコードの兆候 |
%C3%A9 | é | 1文字をUTF-8の2バイトで表したもの |
%E2%82%AC | € | UTF-8の3バイト |
二重エンコードされたURL
URLを別のURLの中に入れるとき、例えばredirectやurlパラメーターとして渡すときは、2回エンコードされることがよくあります。あちこちに%25があるのが目印です。%252Fはエンコードされた%2Fで、それはエンコードされたスラッシュです。デコードしたら%25が残っていないか確認し、なくなるまでデコードを繰り返してください。
デコードに失敗する場合
このツールは、ブラウザーのdecodeURIComponentと同じルールを使います。100%のようにパーセント記号の後ろが2桁の16進数でない場合や、バイト列が有効なUTF-8にならない場合はエラーを表示します。後者は、テキストをLatin-1でエンコードしていた非常に古いシステムで起こります(éが%C3%A9ではなく%E9になる)。
コードでURLをデコードする
- JavaScript:
decodeURIComponent(s.replace(/\+/g, ' ')) - Python:
urllib.parse.unquote_plus(s) - PHP:
urldecode($s) - Java:
URLDecoder.decode(s, StandardCharsets.UTF_8)
URLのパラメーターを1つずつ調べるなら、まずクエリ文字列全体をデコードします。URLの中にあるBase64の値は末尾が%3Dになっていることが多いので、ここでデコードしてからBase64デコードを使ってください。