URL エンコーダー
URL 用にテキストをパーセントエンコードします。encodeURIComponent、厳密な RFC 3986、URL 全体(encodeURI)、スペースを + にするフォームデータに対応。UTF-8 対応。
42 文字 · 47 バイト(UTF-8)
0 文字 · 0 バイト(UTF-8)
すべてブラウザ内で実行されます。データがアップロードされることはありません。
URL エンコードとは?
テキストを パーセントエンコード に変換し、URL で安全に使えるようにします。許可された文字以外は UTF-8 のバイト列としてエンコードされ、各バイトが %XX で書かれます。開発者が実際に使うエンコーダーに対応する 4 つのモードがあります。
URL エンコードの使い方
- 入力 にテキストを入力または貼り付けます。
- エンコード方式 を選びます。クエリの値やパスの一部には コンポーネント – encodeURIComponent、厳密な RFC 3986(!'()* もエンコード)、
: / ? & =を残す URL 全体 – encodeURI、application/x-www-form-urlencoded用の フォームデータ(スペースを + に) があります。 - 出力 からエンコードされた文字列をコピーします。
例
a b&c=é
a%20b%26c%3D%C3%A9
コンポーネントモードの結果です。フォームモードでは a+b%26c%3D%C3%A9 になります。
URL エンコードを使うべき場面
個々のパラメーターの値にはコンポーネントモードを使ってください。完全な URL をこれでエンコードしてはいけません。/、?、& までエンコードされてしまうためです。URL 全体モードは、すでに正しい構造になっている URL にだけ使います。HTML フォームの送信や多くのサーバーフレームワークは、フォームモードを想定しています。
URL エンコードの仕組み
テキストは UTF-8 のバイト列に変換されます。選んだモードの安全な文字集合にあるバイトはそのまま残り、それ以外は % と 2 桁の大文字の 16 進数になります。コンポーネントモードは A–Z a–z 0–9 - _ . ! ~ * ' ( ) を残します(JavaScript の encodeURIComponent と同様)。RFC 3986 モードは A–Z a–z 0–9 - . _ ~ だけを残します。URL 全体モードは ; , / ? : @ & = + $ # も残します(encodeURI と同様)。フォームモードは A–Z a–z 0–9 * - . _ を残し、スペースを + として書きます(URLSearchParams と同様)。
一般的な使用例
- 検索語やリダイレクト先の URL をクエリパラメーターとしてエンコードする
- OAuth や API 署名のベース文字列を作る(RFC 3986 モード)
-
curl -d用のフォームのボディを用意する - 日本語やベトナム語、中国語のスラッグなど、非 ASCII のパスをエンコードする
よくある質問
スペースは %20 と + のどちらにすべきですか?
%20 は URL のどこでも有効です。+ がスペースを意味するのは、フォームエンコードされたクエリ文字列だけです。その場合は フォームデータ(スペースを + に) モードを選んでください。
encodeURI と encodeURIComponent の違いは何ですか?
encodeURI は URL の構造を作る文字(: / ? # & =)を残し、encodeURIComponent はそれらをエンコードするため、値が URL の構造を壊すことがありません。
é が 2 つのコードになるのはなぜですか?
URL は UTF-8 を使います。é は 2 バイトの C3 A9 で、各バイトが %XX で書かれます。