URLエンコードとは?
URLエンコードは、URI内で安全にデータを表現するための符号化方式です。
なぜURLをエンコードするのか?
URLはASCII文字のみ使用可能なため、特殊文字は変換が必要です。
- / パス区切りとして使用。
- ? パスとクエリの区切り。
- # フラグメント識別子。
- & クエリパラメータの区切り。
- スペースは '+' または '%20' に変換されます。
仕組み
特殊文字を '%' と16進数2桁に置き換えます。
URLで安全に使用するために文字列を変換します。
URLエンコードは、URI内で安全にデータを表現するための符号化方式です。
URLはASCII文字のみ使用可能なため、特殊文字は変換が必要です。
特殊文字を '%' と16進数2桁に置き換えます。
テキストを URL で安全に使える形にするなら Encode、%20 のようなパーセントエンコードを読める文字に戻すなら Decode を選びます。
URL 全体、クエリパラメーターの値、または任意のテキストを入力欄に貼り付けます。
結果はすぐに表示されます。スペースは %20 に、日本語などの非 ASCII 文字は UTF-8 のバイト列(「あ」は %E3%81%82)に、& や = などの予約文字はエスケープされます。
出力をコピーしてリンク、API リクエスト、リダイレクト、計測パラメーターに使います。モードを切り替えれば逆方向も確認できます。
「coffee & tea」で検索するなら q=coffee%20%26%20tea と送る必要があります。そうしないと & で新しいパラメーターが始まり、サーバーには「coffee 」しか届きません。
広告やリダイレクトの URL には、エンコードされた別の URL が含まれていることがよくあります。デコードすればクリック前に本当の遷移先がわかります。
日本語のパスはブラウザ内部ではパーセントエンコードされています。https://example.com/%E6%9C%AC をデコードすると「/本」という読めるパスになります。
redirect_uri パラメーターは完全にエンコードする必要があります。ここでエンコードすれば、? や / が混ざったことによる「redirect_uri mismatch」エラーを防げます。
パーセントエンコーディング(RFC 3986)とも呼ばれ、URL で使えない文字や特別な意味を持つ文字を、バイトごとに % と2桁の16進数に置き換える方式です。
%20 は URL のどこでも有効です。+ がスペースを意味するのはフォームデータ(application/x-www-form-urlencoded)のクエリ内だけなので、%20 の方が安全です。
encodeURI は / ? & = など URL の構造を作る文字を残すので URL 全体向けです。encodeURIComponent はそれらもエスケープするのでパラメーターの値1つ向けです。
% の後に有効な16進数2桁が続いていないか、UTF-8 として正しくないバイト列が含まれています。文字列が途中で切れていないか、二重にエンコードされていないか確認してください。