このツールの動作
%XX の並びをその2桁が示すバイトに変え、得られたバイト列を UTF-8 のテキストとして読みます。caf%C3%A9 は café になります。アクセント付きの文字が2バイトだからです。
16進数は大文字でも小文字でも機能します。
知っておくべきはプラス記号
プラスはプラスのまま残ります。これは正しい動作であり、おそらく期待とは違うので、理由を正確に述べます。
よく似た2つの符号化が、ちょうど1文字だけ食い違います。
- パーセント符号化は URL のパスや現代的なクエリ文字列で使われ、空白を
%20と書き、+を文字どおりのプラスとして扱います。 - フォーム符号化(
application/x-www-form-urlencoded、HTML のフォームが送る形式)は、空白を+と書きます。
このツールは前者を適用します。ブラウザの decodeURIComponent と同じです。
どちらが生成した文字列なのかは、文字列自体からは分かりません。 推測するツールは、もう一方の場合を壊します。プラスはメールアドレス、電話番号、検索語の中の正当な文字です。すべてのプラスを空白に変えることは、そのまま残すことがフォームのデータにとって不便であるのと同じ確かさで、それらの値を破壊します。
入力がフォーム由来なら、先に + を %20 に置き換えてください。検索と置換を一度行えば、結果は正しくなります。
拒否するもの
16進2桁が続かないパーセント記号。100% は復号できません。生成すべきバイトがなく、それを捏造するのはエラーより悪いからです。正しく符号化した形は 100%25 です。
有効な UTF-8 にならない %XX の並びも、置換文字に差し替えるのではなく拒否します。存在しなかったテキストを読まされる代わりに、入力が壊れていることが分かります。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。