🔗 URL エンコード / デコード の使い方
日本語や特殊文字を含む文字列を URL で安全に使えるパーセントエンコーディング形式に変換・復元できるツールです。RFC 3986 に準拠した encodeURIComponent 相当の変換を行うため、クエリパラメータや API リクエストの値として安全に利用できます。エンコード・デコードどちらの方向にも対応しており、ログファイルに埋め込まれた URL の解析や、フォームデータのデバッグにも幅広く活用できます。
📌 このツールでできること
URL エンコード / デコード ツールでは、以下の操作を即座に実行できます。
- 日本語・記号・スペースなどを含む文字列を
%XX形式にエンコード %XX形式の文字列を元のテキストにデコードencodeURIComponent相当の厳格エンコード(クエリパラメータ向け)- 結果のワンクリックコピー
- 非 ASCII 文字(日本語・中国語・絵文字など)の UTF-8 バイト列ベースのエンコード
- 予約文字(
! ' ( ) * - _ . ~など)の扱いを RFC 3986 に準拠して処理 - エンコード前後の文字列を並べて比較確認
- API リクエストのクエリ文字列やパスパラメータとして使える形式に整形
- ログ・Webhook ペイロードに含まれる URL エンコード文字列のデコード解析
🚀 使い方
- テキストエリアにエンコードまたはデコードしたい文字列を入力します。
- 「エンコード」ボタンを押すと
%XX形式の文字列が表示されます。 - 「デコード」ボタンを押すと
%XX形式を元のテキストに戻せます。 - 「コピー」ボタンで結果をクリップボードにコピーします。
💡 活用例
クエリパラメータに日本語を使う
URL のクエリ文字列に日本語を含めると、ブラウザや HTTP ライブラリが自動的にエンコードする場合がありますが、手動で確認・生成したいときに便利です。例えば検索 API に日本語キーワードを渡す場合、エンコード後の文字列を直接コピーして使えます。
検索キーワード: "東京 カフェ" エンコード後: %E6%9D%B1%E4%BA%AC%20%E3%82%AB%E3%83%95%E3%82%A7 URL例: https://example.com/search?q=%E6%9D%B1%E4%BA%AC%20%E3%82%AB%E3%83%95%E3%82%A7
フォームデータのデバッグ
HTML フォームを application/x-www-form-urlencoded で送信すると、フィールド名と値が URL エンコードされます。ブラウザの開発者ツールのネットワークタブに表示される文字列をこのツールでデコードすることで、実際に送信されたデータを素早く確認できます。バックエンドのデバッグ効率が大幅に向上します。
ログ・エラーメッセージのデコード
アプリケーションログや Webhook ペイロードにエンコードされた URL 文字列が記録されている場合、このツールでデコードすることで可読性を上げられます。特に外部サービスからのコールバック URL や OAuth リダイレクト URI の解析に役立ちます。
JavaScript / Python でのエンコード方法確認
コードを書く前にこのツールで期待値を確認しておくと、実装後の動作検証がスムーズになります。JavaScript では encodeURIComponent()、Python では urllib.parse.quote() が対応関数です。
// JavaScript
encodeURIComponent("東京 カフェ")
// => "%E6%9D%B1%E4%BA%AC%20%E3%82%AB%E3%83%95%E3%82%A7"
# Python
from urllib.parse import quote
quote("東京 カフェ", safe='')
# => "%E6%9D%B1%E4%BA%AC%20%E3%82%AB%E3%83%95%E3%82%A7"
🔍 技術的な背景 / 仕組み
URL エンコードは RFC 3986 で定義された「パーセントエンコーディング」です。URL で使用できない文字(予約文字や非 ASCII 文字)を % に続く 2 桁の 16 進数(UTF-8 バイト値)で表現します。アルファベット・数字・- _ . ~ の非予約文字はエンコードされません。
例:「あ」は UTF-8 で 3 バイト(0xE3 0x81 0x82)なので、%E3%81%82 になります。絵文字もUTF-8の4バイトシーケンスとしてエンコードされるため、😀 は %F0%9F%98%80 になります。
エンコードが必要な主な文字
以下の文字は URL の構造上意味を持つ「予約文字」または URL に使用できない文字として、クエリパラメータの値に含める場合はエンコードが必要です。
| 文字 | エンコード後 | 備考 |
|---|---|---|
スペース | %20 | フォームでは + も使用 |
& | %26 | クエリの区切り文字 |
= | %3D | キー・値の区切り文字 |
+ | %2B | フォームでスペースと混同注意 |
# | %23 | フラグメント識別子 |
/ | %2F | パス区切り文字 |
? | %3F | クエリ文字列の開始 |
| 日本語(あ) | %E3%81%82 | UTF-8の3バイト |
encodeURI vs encodeURIComponent の違い
JavaScript には 2 つのエンコード関数があります。用途に応じて使い分けが重要です。
encodeURI():URL 全体をエンコード。://?=&などの構造文字はエンコードしない。encodeURIComponent():URL の一部(クエリパラメータの値など)をエンコード。!'()*を除くほぼすべての特殊文字をエンコード。
このツールはクエリパラメータの値として安全な encodeURIComponent 相当の変換を行います。URL 全体をエンコードしたい場合は、パスとクエリを分けて操作するか encodeURI を使用してください。
%20 と + の違い(よくある間違い)
スペースのエンコードには %20 と + の 2 種類があります。RFC 3986 の URL パーセントエンコードでは %20 が正式です。一方、+ は HTML フォームの application/x-www-form-urlencoded 形式で使われる慣習的な表現です。REST API に JSON を送る場合やクエリパラメータを手動で組み立てる場合は %20 を使うのが安全です。
❓ よくある質問
- Q. スペースは
%20と+どちらになりますか? - RFC 3986 の標準では
%20です。+は HTML フォームのapplication/x-www-form-urlencoded形式での慣習的な表現で、厳密には異なります。このツールは%20を使用します。サーバー側で + をスペースとして解釈するかどうかはフレームワーク次第なので注意が必要です。 - Q. 日本語 URL はどのようにエンコードされますか?
- 日本語は UTF-8 でエンコードされます。例えば「東京」は UTF-8 で 6 バイト(
E6 9D B1 E4 BA AC)となるため、%E6%9D%B1%E4%BA%ACと表現されます。ブラウザのアドレスバーには読みやすい日本語で表示されますが、内部的には常にエンコードされた形式で処理されています。 - Q. デコードもできますか?
- はい。「デコード」ボタンを押すことで
%XX形式の文字列を元のテキストに戻せます。ログファイルや API レスポンスに含まれるエンコード済み URL を人間が読みやすい形式に変換する際に便利です。 - Q. 二重エンコードに注意が必要なケースは?
- すでにエンコードされた文字列を再度エンコードすると、
%自体が%25に変換されて二重エンコードになります。例えば%E3%81%82を再度エンコードすると%25E3%2581%2582になり、受け取り側で正しくデコードできなくなります。API に渡す値は一度だけエンコードするよう注意してください。 - Q. 日本語ドメイン(IDN)もエンコードできますか?
- 日本語ドメイン(例:
例え.jp)は Punycode という別の変換方式(xn--形式)を使用します。このツールのパーセントエンコードとは異なる仕組みであり、ドメイン部分のエンコードには対応していません。 - Q. Python での URL エンコードはどうすればよいですか?
- Python では
urllib.parseモジュールを使います。クエリパラメータの値をエンコードするにはurllib.parse.quote(value, safe='')、クエリ文字列全体を組み立てるにはurllib.parse.urlencode({'key': 'value'})が便利です。このツールで期待値を確認してからコードを実装すると効率的です。
📚 関連書籍・商品 PR
※ 本リンクはアフィリエイト広告を含みます。