URLエンコーダー・デコーダー

ブラウザ内で動作し、何もアップロードされません

URL用にテキストをパーセントエンコード・デコードしたり、URLを各部分とクエリパラメーターに分解したりできます。

Text

Encodes everything except letters, digits and - _ . ! ~ * ' ( ). Use it for one query value or path segment.

Encoded

The encoded text appears here as you type.

Ready

URLエンコードとは?

URLエンコードはパーセントエンコーディング(RFC 3986)とも呼ばれ、URLで使えない文字や特別な意味を持つ文字を、% と2桁の16進数に置き換えます。スペースは %20、& は %26、/ は %2F になります。それ以外の文字はまずUTF-8のバイト列に変換されるため、é は %C3%A9 になり、日本語の文字も複数の %XX になります。

これが重要なのは、URLの構造そのものを決める文字があるからです。? はクエリ文字列の始まり、& はパラメーターの区切り、= は名前と値の区切り、# はフラグメントの始まりです。検索語に & が含まれていてエンコードされていないと、サーバーはそこを新しいパラメーターの始まりとして読んでしまいます。

エンコードするのはURL全体ではなく、個々の値です。完全なURLを値としてエンコードすると、:// や /、? までエンコードされて壊れてしまいます。URL全体モードはそのためのもので、ほかは正しいURLのスペースや特殊文字だけを直したいときに使います。

使い方

  1. 1Encode、Decode、Parse から選びます。切り替えてもテキストは残ります。Swap(Alt+Shift+S)は出力を入力に移し、Encode と Decode を切り替えます。
  2. 2エンコードするときは、テキストの種類を選びます。値(encodeURIComponent)、URL全体(encodeURI)、またはスペースが + になるフォームデータです。エディターの上の行に、それぞれでどの文字がそのまま残るかが正確に表示されます。
  3. 3デコードするときは、エンコードされたテキストを貼り付けます。HTMLフォームから送られたフォームデータやクエリ文字列には、+ means space をオンにします。不正なシーケンスやUTF-8でないシーケンスはエディターでマークされ、F8で移動できます。
  4. 4結果にまだ %XX が残っている場合は、テキストが2回エンコードされています。ステータスバーの Decode again でもう一度デコードできます。
  5. 5Each line separately は、値のリスト用に各行を別々の値として扱います。Parse はURLをスキーム、ホスト、ポート、パス、フラグメント、そしてデコード済みのクエリパラメーターの表に分解し、JSONとしてコピーできます。

トラブルシューティング

% の後には2桁の16進数が必要です
テキストに 100% のような文字どおりのパーセント記号があるか、途中で切れたシーケンスがあります。URLの中で本当のパーセント記号を表すには %25 と書きます。
%E9 はこの位置では有効なUTF-8ではありません
UTF-8ではなくLatin-1を使う古いエンコーダーでエンコードされたため、é が %C3%A9 ではなく %E9 になっています。元のテキストをエンコードし直すか、送信元にUTF-8を使ってもらってください。
+ がスペースになった、またはスペースが + のまま
+ がスペースを意味するのは、HTMLフォームが送るクエリ文字列のようなフォームデータ(application/x-www-form-urlencoded)の中だけです。テキストの出どころに合わせて + means space をオン・オフしてください。
絶対URLではありません
Parse には https://api.example.com のようなスキームとホストが必要です。/users?page=2 のようなパスはページからの相対パスなので、単独では解析できません。

よくある質問

encodeURI と encodeURIComponent の違いは何ですか?

encodeURIComponent は英数字と - _ . ! ~ * ' ( ) 以外をすべてエンコードするので、単一の値に適しています。encodeURI は : / ? # & = + のようにURLの構造を作る文字をそのまま残すので、安全でない文字だけを直したいURL全体に適しています。

スペースは %20 と + のどちらにすべきですか?

パスやほとんどのAPIでは %20 を使います。+ がスペースを意味するのはフォームデータの中だけで、これはブラウザがHTMLフォームで送る形式であり、多くのクエリ文字列でも使われています。フォームで作られたクエリ文字列をデコードするときは、+ means space をオンにしてください。

Parse で表示されるURLが、貼り付けたものと違うのはなぜですか?

Parse はブラウザのURLパーサーを使っており、URLを正規化します。スキームとホストを小文字にし、:443 のようなデフォルトポートを取り除き、スペースや非ASCII文字をパーセントエンコードします。Copy URL はその正規化された形をコピーします。

入力内容はサーバーに送信されますか?

いいえ。エンコード、デコード、解析はブラウザ内で行われ、貼り付けた内容はアップロードされません。再読み込みしても消えないように、貼り付けた内容は消去するかタブを閉じるまで、このタブのsession storageに保存されます。Copy link は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。