URLエンコード・デコード
url-encode• URLをエンコード/デコード。コンポーネント・URL全体モードに対応。 • 特殊文字や空白も安全に変換して、結果をコピー。
クエリ値・パス片向け。予約文字(/, ?, &, = など)もエンコード。(encodeURIComponent)
コンポーネントモードは予約文字をすべてエンコード(クエリ値向け)、URL全体モードは : / ? # & = などを保持(アドレス全体向け)。空白は既定で%20、フォームオプションで + になります。
URLエンコードが必要な理由
URLには英数字と一部の記号しか使えません。日本語や空白、& ? = などの記号をそのまま入れると、アドレスが途中で切れたり別の意味に読まれたりします。そこでこれらを%と十六進数の組み合わせに書き換えるのがURLエンコードです。
空白は%20、&は%26になり、日本語はUTF-8で1文字あたり%XXが複数になります。検索語入りのリンクを共有するとき、クエリ文字列に値を入れるとき、メッセンジャーでリンクが崩れるときに役立ちます。
逆に%が多いアドレスを元の文字に戻して読むこともできます。どの検索語で訪問されたかをログで見るときに便利です。入力値はブラウザ内でのみ変換され、サーバーには送信されません。
よくある質問
URLエンコードで空白は%20ですか、それとも+ですか
アドレスやパスに入る空白は%20が標準です。+ が空白を意味するのはフォーム送信のときだけです。このツールのフォームオプションを有効にすると%20を + に置き換え、デコード時も + を空白として読み戻します。この2つを取り違えると、検索語に含まれる + が空白として読まれることがあります。
encodeURIとencodeURIComponentの違いは何ですか
encodeURIはURL全体を扱う用途なので、コロンやスラッシュ、? # & = などの区切り記号を残します。encodeURIComponentは値ひとつを扱う用途で、これらの記号も変換します。それぞれURL全体モードとコンポーネントモードに対応します。
なぜ1文字が%XX3つ分になるのですか
エンコードは文字ではなくバイト単位で行われます。UTF-8では日本語1文字が3バイトなので%XXが3つ並び、絵文字は4バイトなので4つになります。英数字は1バイトのため、そのまま読める形で残ります。
%2520のような値になるのはなぜですか
すでにエンコードされた値を、もう一度エンコードした状態です。% 自体が %25 になるため %20 が %2520 になります。リンクを組み立てる処理が同じ値を二度扱うと起きやすく、デコードを2回行えば元の文字列に戻ります。
URLデコードでエラーになります
% の後ろには十六進数2桁が必要です。割引30%のように % がそのまま含まれる文字列はこの規則を満たさず、デコードできません。その場合は % を %25 に書き換えるか、問題のある部分を除いて変換してください。エンコード済みか迷うときは、まずエンコードして見比べる方法もあります。
エンコードされない文字はどれですか
英字と数字、そしてハイフン・アンダースコア・ピリオド・チルダなど一部の記号は安全な文字とみなされ、そのまま残ります。それ以外は % と十六進数に変換されます。URL全体モードでは、さらにアドレスの構造を作る区切り記号も保持されます。