URL エンコーダー&デコーダー
URL やクエリ文字列用にテキストをパーセントエンコードし、エンコードされた URL をデコード。任意の URL を構成要素に分解し、クエリパラメータもデコードして表示します。
ブラウザ内で動作登録不要アップロードなし
エンコード結果
構成要素
クエリパラメータ
URL エンコード / デコードの使い方
- エンコードかデコードを選びます。
- エンコード時は、クエリの値 1 つやパスのセグメントにはコンポーネント、URL の構造を保つにはURL 全体、フォームデータ(
application/x-www-form-urlencoded用)を選びます。 - テキストを貼り付けます。結果はすぐに表示され、不正なエスケープはその位置とともに報告されます。
- 完全な URL を URL パーサーに貼り付けると、ホスト、パス、フラグメント、すべてのクエリパラメータをデコードして表示します。
URL エンコードとは?
URL に使える ASCII 文字は限られています(RFC 3986)。スペース、英語以外の文字、&、?、# のような特別な意味を持つ文字など、それ以外のものはすべて、UTF-8 の各バイトをパーセント記号と 2 桁の 16 進数で表します。スペースは %20、é は %C3%A9 になります。
encodeURIComponent と encodeURI の違い
| 関数 | エンコードしない文字 | 用途 |
|---|---|---|
encodeURIComponent | A-Z a-z 0-9 - _ . ~ | クエリの値 1 つ、パスのセグメント、パラメータ名 |
encodeURI | 上記に加えて : / ? # [ ] @ ! $ & ' ( ) * + , ; = | 構造を保つ必要がある URL 全体 |
クエリの値に encodeURI を使うのは典型的なバグです。値の中の & がエスケープされず、パラメータが 2 つに分かれてしまいます。このツールのコンポーネントモードは、RFC 3986 に厳密に準拠するため ! ' ( ) * もエスケープします。
スペースは %20 か + か?
パスでは、スペースは %20 でなければなりません。HTML フォームの送信(application/x-www-form-urlencoded)や多くのクエリ文字列では、スペースは + と書かれます。デコード時、フォームデータなら + をスペースとして扱うを有効にし、jane+test@example.com のようにプラス記号そのものが重要な場合は無効にしてください。
よくある質問
デコード時に「エスケープが不正」と表示されるのはなぜですか?
% の後にはちょうど 2 桁の 16 進数が必要です。「50% off」のようなパーセント記号そのものは %25 とエンコードされているべきです。エラーには問題のある箇所の位置が表示されます。「無効な UTF-8 バイト列」とはどういう意味ですか?
バイト列が UTF-8 でエンコードされていません。多くの場合、Latin-1 を使うレガシーシステムが生成したテキスト(é が
%C3%A9 ではなく %E9 になっているなど)か、文字の途中で文字列が切れていることが原因です。URL 全体をエンコードすべきですか?それともパラメータだけですか?
各パラメータの名前と値をそれぞれコンポーネントエンコードし、
= と & でつなげてください。完全な URL をコンポーネントモードでエンコードすると :// までエスケープされ、URL が壊れます。二重エンコードは問題になりますか?
はい。すでにエンコードされた文字列をさらにエンコードすると、
%20 が %2520 になります。%25 の後に 16 進数が続いていたら、値はおそらく 2 回エンコードされています。2 回デコードすれば元に戻ります。