URL エンコード
URLコンポーネントのエンコードとデコード
URL / パーセントエンコーディングとは?
URLは小さなセットのASCII文字のみを含むことができます。それ以外のもの — スペース、アクセント付き文字、絵文字、予約文字(`&`, `=`, `?` など) — は `%` の後に2つの16進数の数字を続けてパーセントエンコードする必要があります。スペースは `%20` に、`é` は `%C3%A9` に、疑問符は `%3F` になります。
単一の部分(クエリパラメータの値、パスセグメント)をエスケープする場合は「コンポーネント」エンコーディングを使用します — JavaScriptの `encodeURIComponent` に相当します。構造的区切り文字を保持したい全体のURLをエスケープする場合は「フルURL」エンコーディングを使用します — `encodeURI` に相当します。
使用例
- クエリ文字列を構築 — ユーザー入力をパーセントエンコードして `?q=` パラメータに詰め込む。
- サーバーログを調査 — 乱れたURLをデコードして元のパスを読み取る(`/Users/%E4%B8%AD%E6%96%87/...`)。
- OAuthリダイレクトをデバッグ — `redirect_uri` を貼り付けてOAuthコールバックがデコードされた内容を正確に確認する。
- curlの例を読む — チュートリアルからパーセントエンコードされたURLをコピーしてデコードしてリクエストを理解する。
例
| 入力 | 結果 |
|---|---|
| hello world & friends | hello%20world%20%26%20friends |
| café/menu?id=123 | caf%C3%A9%2Fmenu%3Fid%3D123 (component) or caf%C3%A9/menu?id=123 (full URL) |
よくある質問
encodeURIとencodeURIComponentの違いは何ですか?
`encodeURI` はURLの構造的な文字(`:`、`/`、`?`、`#`、`&`、`=`)をそのままにします — 全体のURLをエンコードするためのものです。`encodeURIComponent` はそれらもエスケープします — URLに入る単一の部分をエンコードするためのものです。
非ASCII文字を扱えますか?
はい。ASCII以外の文字はそのUTF-8バイト(1〜4バイト)としてエンコードされ、各バイトは `%XX` として表されます。
デコード時に `+` はスペースとして解釈されますか?
いいえ。このツールは標準のURLデコードを使用しており、`+`はそのままです。`+`がスペースを意味するルールは`application/x-www-form-urlencoded`フォームデータに特有であり、このツールには別のフォームデコードモードはありません。
エンコード後にURLが壊れるのはなぜですか?
構造的な文字(`:`、`/`、`?`、`#`)をエンコードしましたが、それらはリテラルのままである必要があります。このツールは常にコンポーネントエンコーディング(`encodeURIComponent`)を行い、それらをエスケープします — したがって、全体のURLではなく、個々のクエリ値やパスセグメントのみをエンコードしてください。
何かがアップロードされますか?
いいえ — エンコードとデコードは完全にブラウザ内で実行されます。
