URLエンコード・デコード — パーセントエンコーディング変換
日本語や絵文字に対応したURLのパーセントエンコード・デコード
ブラウザー内で処理・アップロード不要
URLエンコードとは
URLにそのまま書けるのは、英字、数字、いくつかの記号だけです。日本語、空白、絵文字などそれ以外の文字はUTF-8のバイトに変換され、各バイトが % と2桁の16進数で書かれます。これがパーセントエンコーディングです。このツールは入力に合わせて、エンコードまたはデコードの結果を表示します。
使い方
- エンコードかデコードを選びます。
- 範囲を選びます。クエリの値1つならencodeURIComponent、URL全体ならencodeURIです。
- テキストやURLを入力欄に貼り付けると、すぐに結果が表示されます。
- フォームデータをデコードするときは、+を空白として扱うオプションにチェックを入れます。
- 結果をコピーするか、「出力を入力に使う」を押して往復変換を確認します。
仕組み
- ブラウザー標準の
encodeURIComponent、encodeURI、decodeURIComponent、decodeURIが、RFC 3986のルールに沿って変換します。 - テキストはまずUTF-8のバイトになります。日本語や中国語の文字は3バイトなので
%XXが3つ、絵文字は4バイトなので4つになります。 - エスケープされない文字は
A-Z a-z 0-9 - _ . ! ~ * ' ( )です。encodeURIはさらに; , / ? : @ & = + $ #もそのまま残します。 - 対になっていないサロゲートはエンコードできず、エラーとして報告します。
- デコードに失敗したときに黙って修復することはなく、エラーメッセージを表示します。
例
| 入力 | モード | 結果 |
|---|---|---|
a b&c=d |
単一の値 | a%20b%26c%3Dd |
日本語 |
単一の値 | %E6%97%A5%E6%9C%AC%E8%AA%9E |
👍 |
単一の値 | %F0%9F%91%8D |
https://example.com/検索?q=a b |
URL全体 | https://example.com/%E6%A4%9C%E7%B4%A2?q=a%20b |
よくある質問
encodeURIComponentとencodeURIの違いは何ですか?
encodeURIComponentはクエリの値のような1つの部分に使うため、区切り文字の / ? & = や # もエスケープします。encodeURIはURL全体に使い、これらの区切り文字はそのまま残します。
デコードでエラーになるのはなぜですか?
%の後には2桁の16進数が必要で、得られたバイトが有効なUTF-8になっている必要があります。文字列が途中で切れていないか、エスケープされていない%そのものが含まれていないかを確認してください。
空白は%20と+のどちらですか?
URLのパスでは%20です。+が空白を意味するのはHTMLフォームのエンコード(application/x-www-form-urlencoded)だけです。そのようなデータをデコードするときは、+を空白として扱うオプションをオンにしてください。
URLはサーバーに送信されますか?
いいえ。処理はすべてブラウザー内で行います。