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.
URLエンコードとは?
URLエンコードはパーセントエンコーディング(RFC 3986)とも呼ばれ、URLで使えない文字や特別な意味を持つ文字を、% と2桁の16進数に置き換えます。スペースは %20、& は %26、/ は %2F になります。それ以外の文字はまずUTF-8のバイト列に変換されるため、é は %C3%A9 になり、日本語の文字も複数の %XX になります。
これが重要なのは、URLの構造そのものを決める文字があるからです。? はクエリ文字列の始まり、& はパラメーターの区切り、= は名前と値の区切り、# はフラグメントの始まりです。検索語に & が含まれていてエンコードされていないと、サーバーはそこを新しいパラメーターの始まりとして読んでしまいます。
エンコードするのはURL全体ではなく、個々の値です。完全なURLを値としてエンコードすると、:// や /、? までエンコードされて壊れてしまいます。URL全体モードはそのためのもので、ほかは正しいURLのスペースや特殊文字だけを直したいときに使います。
使い方
- 1Encode、Decode、Parse から選びます。切り替えてもテキストは残ります。Swap(Alt+Shift+S)は出力を入力に移し、Encode と Decode を切り替えます。
- 2エンコードするときは、テキストの種類を選びます。値(
encodeURIComponent)、URL全体(encodeURI)、またはスペースが+になるフォームデータです。エディターの上の行に、それぞれでどの文字がそのまま残るかが正確に表示されます。 - 3デコードするときは、エンコードされたテキストを貼り付けます。HTMLフォームから送られたフォームデータやクエリ文字列には、+ means space をオンにします。不正なシーケンスやUTF-8でないシーケンスはエディターでマークされ、F8で移動できます。
- 4結果にまだ
%XXが残っている場合は、テキストが2回エンコードされています。ステータスバーの Decode again でもう一度デコードできます。 - 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 は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。