URLエンコード・デコード

日本語や記号を含む文字列をURLエンコード(パーセントエンコーディング)したり、元の文字列に戻したりします。パラメータの値用とURL全体用を選べます。

対象

クエリの値やパスの一部に使います。/ ? & = # も変換します。例:東京&大阪 → %E6%9D%B1%E4%BA%AC%26%E5%A4%A7%E9%98%AA

HTMLフォームの送信形式(application/x-www-form-urlencoded)に合わせ、空白を + にします。デコード時は + を空白に戻します。「パラメータの値・部分」でのみ使えます。

よく使う文字のエンコード一覧
文字encodeURIComponentencodeURI
空白%20%20
!変換しない変換しない
"%22%22
#%23変換しない
$%24変換しない
%%25%25
&%26変換しない
'変換しない変換しない
(変換しない変換しない
)変換しない変換しない
*変換しない変換しない
+%2B変換しない
,%2C変換しない
/%2F変換しない
:%3A変換しない
;%3B変換しない
=%3D変換しない
?%3F変換しない
@%40変換しない
[%5B%5B
]%5D%5D
~変換しない変換しない
é%C3%A9%C3%A9
€%E2%82%AC%E2%82%AC
😀%F0%9F%98%80%F0%9F%98%80

使い方

  1. 対象を選びます。クエリの値など一部分なら「パラメータの値・部分」、URLをまるごと変換するなら「URL全体」です。
  2. HTMLフォームの形式(空白を + で表す)が必要な場合は「フォーム形式」をオンにします。
  3. 文字列を入力し、「エンコード」または「デコード」を押します。
  4. 結果を「コピー」します。「結果を入力に戻す」を押すと、結果を入力欄に移して続けて変換できます。
  5. ページ下の「よく使う文字のエンコード一覧」で、記号ごとの変換結果を2つの方式で見比べられます。

注意事項

  • 入力は2MBまでです。
  • 文字はUTF-8としてエンコード・デコードします。Shift_JISやEUC-JPでエンコードされた文字列(例:%93%8C)はデコードできず、エラーになります。
  • 「URL全体」のデコードでは、%2F(/)・%3F(?)・%23(#)・%26(&)など区切りに使う記号はエンコードされたまま残ります。URLの構造が変わらないようにするためです。
  • URLにアクセスしたり、リンクとして表示したりはしません。

計算・変換の仕組み

「パラメータの値・部分」はJavaScriptの encodeURIComponent / decodeURIComponent と同じ規則です。英数字と - _ . ! ~ * ' ( ) 以外をすべて変換します。

「URL全体」は encodeURI / decodeURI と同じ規則で、: / ? # [ ] @ & = + $ , ; などURLの区切りに使う記号は変換しません。

フォーム形式は URLSearchParams と同じ結果になるよう、空白を + にし、! ' ( ) ~ も変換します。デコード時は + を空白として扱います。

デコード前に % の後が16進数2桁か、バイト列が正しいUTF-8かを確認し、問題があれば何文字目かを表示します。

よくある質問

「パラメータの値・部分」と「URL全体」はどう使い分けますか?

検索語などクエリの値を1つ作るときは「パラメータの値・部分」です。& や = も変換されるため、値の中に記号があっても壊れません。URLをそのまま安全な形にしたいときは「URL全体」を使います。

空白は %20 と + のどちらになりますか?

通常は %20 です。「フォーム形式」をオンにすると + になります。デコード時も、フォーム形式をオンにしたときだけ + を空白に戻します。

エンコード済みの文字列をもう一度エンコードするとどうなりますか?

% が %25 に変換され、二重にエンコードされます。入力に %XX が含まれている場合は注意を表示します。

入力した文字列は送信されますか?

いいえ。変換はブラウザ内で行い、入力したURLにアクセスすることもありません。

最終更新日: