URLエンコード / デコード
URL コンポーネントやクエリ文字列のパーセントエンコード / デコード
ローカル実行
loading…
このツールについて
スペース、アンパサンド、非 ASCII 文字などは URL にそのまま現れることができないため、パーセントエンコードされます。スペースは %20 に、你 は %E4%BD%A0 になります。このツールはテキストを URL に安全に含められる形にエンコードし、パーセントエスケープされた文字列を読めるテキストにデコードします。クエリ文字列でスペースを + で表す慣習にも対応しています。
エンコードモードが 2 つあるのは、JavaScript 自体に 2 つあるからです。コンポーネントモード(encodeURIComponent)は URL の区切りになり得る文字をすべてエスケープします。単一のクエリ文字列の値にはこちらが適切です。完全 URI モード(encodeURI)は / や ? や & といった構造文字を保持します。ナビゲート可能なまま保つべき URL 全体をエンコードするときに使います。
デコードは不正な % シーケンスに厳格です — 孤立した % や %ZZ は黙って素通しにせずエラーとして報告されます。これはブラウザーやサーバーがそれらを扱うのとまったく同じやり方です。
よくある質問
- コンポーネントモードと完全 URI モードはいつ使い分けますか?
- URL の中に入る値(検索クエリ、リダイレクト先、パラメーター内のメールアドレス)のエンコード → コンポーネントモード。値の中の & や = がクエリ文字列を壊さないようにします。表示や転送のための完全な URL のエンコード → 完全 URI モード。URL の構造が保たれます。
- なぜ + がスペースを意味することがあるのですか?
- application/x-www-form-urlencoded 形式 — HTML フォーム送信とクエリ文字列で使われる形式 — が歴史的にスペースを + にエンコードしてきたからです。URL のパス内では + はただのプラスです。ここのデコーダーはクエリ文字列の意味論に合わせて + をスペースとして扱います。%20 はどこでも常に有効です。
- なぜ文字列が二重エンコード(%2520)されているのですか?
- %25 は % 自身のエンコードなので、%2520 はテキスト %20 がもう一度エンコードされたことを意味します。システムの 2 つの層がそれぞれエンコードすると起こります。ここで 2 回デコードすれば元に戻せるので、その後、エンコードすべきでない層を直してください。
- Unicode 文字は正しく扱われますか?
- はい — WHATWG URL 標準に従い、テキストはまず UTF-8 としてエンコードされ、各バイトがパーセントエスケープされます。CJK 文字 1 つが 3 つの %XX グループになるのはそのためです。