URL Encode / Decode
テキストをURLエンコード・デコードします。
概要
テキストをURLエンコード(パーセントエンコーディング)形式へ変換、またはURLエンコードされた文字列を元のテキストへ戻すツールです。
URLのクエリパラメータには日本語や記号(&、=、スペースなど)をそのまま含められないため、これらを%XX形式に変換して安全に埋め込めるようにします。
encodeURIComponent/decodeURIComponentと同じ挙動のため、URL全体ではなく1つの値(クエリパラメータの値など)を変換する用途を想定しています。
使い方
- 1
テキストエリアに、エンコードしたいテキストまたはデコードしたいURLエンコード文字列を入力します。
- 2
「エンコード」または「デコード」ボタンをクリックします。
- 3
変換結果が下部に表示されます。
入力例・出力例
入力
こんにちは World!
出力
%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20World!
利用シーン
クエリパラメータに日本語や記号を含むURLを組み立てる際、値の部分だけを事前にエンコードする
他システムから受け取ったURLエンコード済みの値をデコードし、元の文字列を確認する
Webフォームやリンクに含まれる特殊文字(&や=など)を、URLとして安全に扱える形へ変換する
詳しい解説
encodeURIとencodeURIComponentの違い
JavaScriptには、URLエンコードを行う関数としてencodeURIとencodeURIComponentの2つがあります。encodeURIはURL全体を渡す前提の関数で、「/」「?」「&」「=」など、URLの区切りに使う記号はそのまま残します。encodeURIComponentはクエリパラメータの値など、URLの部品を渡す前提の関数で、これらの記号もエンコードします。
例えば「a b&x=1」という値をクエリパラメータに入れる場合、encodeURIでは「&」と「=」が残り、別のパラメータとして解釈されてしまいます。encodeURIComponentなら「a%20b%26x%3D1」となり、1つの値として正しく送れます。このツールはencodeURIComponentと同じ変換を行います。
スペースが「+」になる場合と「%20」になる場合
HTMLのフォームを送信したときや、JavaScriptのURLSearchParamsを使ったときは、スペースが「+」に変換されます(application/x-www-form-urlencodedという形式)。一方、encodeURIComponentやこのツールでは「%20」になります。
受け取る側がどちらの形式を前提にしているかによって、「+」がスペースに戻らず「+」のまま扱われてしまうことがあります。送る側と受け取る側で形式をそろえることが大切です。
二重エンコードに注意
すでにエンコード済みの文字列をもう一度エンコードすると、「%」自体が「%25」に変換されます。例えば「%E3%81%82」(「あ」)を再びエンコードすると「%25E3%2581%2582」になり、受け取った側で1回デコードしても元の文字に戻りません。URLに「%25」が多く含まれている場合は、二重にエンコードされていないかを疑ってみましょう。
よくある質問
スペースは+に変換されますか?
いいえ。encodeURIComponentを使用しているため、スペースは%20に変換されます。
クエリ文字列全体(key=value&...)をそのままエンコードできますか?
本ツールは1つの値の変換を想定しています。&や=を含む文字列全体を渡すと、それらの記号もエンコード対象になります。
不正なURLエンコード文字列をデコードするとどうなりますか?
「URLエンコードの形式が正しくありません。」というエラーメッセージが表示されます。
注意点
スペースは+ではなく%20に変換されます(encodeURIComponent準拠)。
クエリ文字列全体(key=value&key2=value2の形)をそのまま渡すと、&や=も含めてすべてエンコード対象になります。1つの値ずつ変換してください。
デコード時に、%に続く文字が正しい16進数2桁になっていないなど、不正なURLエンコード文字列を入力するとエラーになります。
関連する解説記事
- 文字化けの原因と直し方:UTF-8・Shift_JIS・BOMの違いを化け方から見分ける
「縺」「繧」が並ぶ、「ã」が並ぶ、「�」が並ぶ――化け方のパターンから原因の文字コードを推測する方法と、ExcelのCSV・BOM・波ダッシュ問題への対処を解説します。
関連ツール
テキストをHTMLエスケープ・アンエスケープします。
2進数・8進数・10進数・16進数を相互に変換(コンバーター)します。
URLを構成要素ごとに分解(パース)して表示します。