URL エンコーダー&デコーダー

URL やクエリ文字列用にテキストをパーセントエンコードし、エンコードされた URL をデコード。任意の URL を構成要素に分解し、クエリパラメータもデコードして表示します。

ブラウザ内で動作登録不要アップロードなし

エンコード結果

URL エンコード / デコードの使い方

  1. エンコードかデコードを選びます。
  2. エンコード時は、クエリの値 1 つやパスのセグメントにはコンポーネント、URL の構造を保つにはURL 全体、フォームデータ(application/x-www-form-urlencoded 用)を選びます。
  3. テキストを貼り付けます。結果はすぐに表示され、不正なエスケープはその位置とともに報告されます。
  4. 完全な URL を URL パーサーに貼り付けると、ホスト、パス、フラグメント、すべてのクエリパラメータをデコードして表示します。

URL エンコードとは?

URL に使える ASCII 文字は限られています(RFC 3986)。スペース、英語以外の文字、&、?、# のような特別な意味を持つ文字など、それ以外のものはすべて、UTF-8 の各バイトをパーセント記号と 2 桁の 16 進数で表します。スペースは %20、é は %C3%A9 になります。

encodeURIComponent と encodeURI の違い

関数エンコードしない文字用途
encodeURIComponentA-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 回デコードすれば元に戻ります。

関連ツール