URLエンコーダー・デコーダー
URL、クエリ文字列、パラメータをパーセントエンコード・デコード。ブラウザ内で完結。
URLエンコード・デコードツール(パーセントエンコーディング)
URLで使える文字は限られています。空白、日本語、アンパサンド、値の中のスラッシュ、絵文字、アラビア文字といったそれ以外の文字は、リンクやクエリ文字列、フォーム送信の中を安全に通すためにパーセントエンコードする必要があります。この無料のURLエンコード・デコードツールは、その変換を双方向で即座に行い、サーバーへは何も送信しません。
テキストを貼り付けてエンコードを押せば送信可能な文字列になり、エンコード済みのURLを貼り付けてデコードを押せば読める形に戻ります。モード切り替えでencodeURIComponentとencodeURIを選べます。この選択こそが、リンクが正しく動くか静かに壊れるかを分けるポイントです。
URLエンコードとは
URLエンコード(パーセントエンコーディング)は、使えない文字をパーセント記号とその16進バイト値に置き換える仕組みです。空白は%20、スラッシュは%2F、疑問符は%3Fになります。ASCII以外の文字はまずUTF-8のバイト列に変換され、そのうえで1バイトずつエンコードされます。そのため日本語の1文字は通常3つのパーセント表記になり、絵文字では4つになることもあります。
encodeURIComponentとencodeURIの使い分け
| 状況 | モード | 理由 |
|---|---|---|
| クエリパラメーターの値をエンコードする | encodeURIComponent | &・=・?・/・#を escape し、値が自分の枠から飛び出さないようにする |
| スラッグなどパス要素をエンコードする | encodeURIComponent | 値の中のスラッシュが新しい階層を作ってしまうのを防ぐ |
| 手元にある完全なURLを整える | encodeURI | 構造を表す文字を残すため、アドレスがURLとして機能し続ける |
| 別のURLの中に戻り先URLを渡す | encodeURIComponent | 内側のURLは構造ではなく値だから |
URLをエンコード・デコードする手順
- テキスト、パラメーターの値、または完全なURLを入力欄に貼り付けます。
- 単独の値なら
encodeURIComponent、アドレス全体ならencodeURIを選びます。 - エンコードはエンコード、元に戻すときはデコードをクリックします。
- 出力をそのままコードやブラウザーのアドレスバー、APIクライアントに貼り付けます。
よく見かける変換結果
%20- 空白。古いフォーム送信では+が同じ役割を果たします。%2F- スラッシュ。パスではなく値の一部であるときにエンコードします。%3Fと%26- 疑問符とアンパサンド。クエリパラメーターの区切り文字です。%3D- 等号。パラメーター名と値を分けます。%23- シャープ。そのままだとフラグメント識別子の開始と解釈されます。%2B- プラス記号。エンコードしないと空白として解釈されることがあります。
URLエンコードが必要になる場面
- ユーザー入力がクエリ文字列に入る検索・絞り込み・ページングのリンクを組み立てるとき。
- OAuthプロバイダーや決済ゲートウェイに
redirect_uriとして戻り先URLを渡すとき。 - 空白や記号を含むUTMキャンペーンパラメーターを追加するとき。
- メールに届いた長いトラッキングリンクをデコードして、実際の遷移先を確認するとき。
- パラメーターにJSON・タイムスタンプ・署名が含まれるAPI呼び出しをデバッグするとき。
- 日本語やペルシャ語、キリル文字のスラッグがコピー&ペーストで壊れないようにするとき。
リンクを壊すよくある間違い
- 二重エンコード。エンコード済みの文字列を再度かけると
%20が%2520になります。まずデコードし、そのうえで1回だけエンコードします。 - URL全体をencodeURIComponentにかける。
://やスラッシュまでエスケープされ、URLとして成立しなくなります。 - +と%20の混同。クエリ文字列ではプラスが空白を意味することがありますが、パスの中では文字どおりのプラスです。
- UTF-8を前提にしない。ISO-8859-1で符号化された古いページは、現代のデコーダーでは戻せないパーセント表記を生みます。
- デコード結果を無条件に信用する。デコードはサニタイズではありません。クエリやHTMLで使う前に必ず検証してください。
処理はすべてブラウザー内で完結します
このツールはブラウザー自身のJavaScript関数を使うため、アップロードも保存もログ記録もありません。署名付きURL、セッションID、顧客情報を含むパラメーターは、あるべき場所であるあなたの端末の中にとどまります。
JavaScript・Python・PHP・Java・C#でのURLエンコード
| 言語 | 値をエンコード | 注意点 |
|---|---|---|
| JavaScript | encodeURIComponent(value) | URL全体には encodeURI |
| Python | urllib.parse.quote(value, safe='') | quote_plus はスペースを + にする |
| PHP | rawurlencode($value) | urlencode はスペースに + を使う |
| Java | URLEncoder.encode(value, "UTF-8") | スペースが + になる。パス内では %20 に置き換える |
| C# / .NET | Uri.EscapeDataString(value) | HttpUtility.UrlEncode は + を使う |
| PowerShell | [uri]::EscapeDataString($value) | .NETと同じルール |
関連ツール
URLとペイロードはセットで扱うことが多いものです。埋め込みバイナリはBase64エンコーダーで復元し、コールバックURLのトークンはJWTデコーダーで確認し、APIレスポンスはJSON整形ツールで読みやすくし、パターンは正規表現テスターで検証できます。