onlinetools.dev

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 グループになるのはそのためです。
関連ツール