このツールについて
URLエンコード(パーセントエンコードとも呼ばれます)は、URL内で特別な意味を持つ文字や使用できない文字を、パーセント記号とその16進バイト値に置き換えます。スペースは%20に、アンパサンドは%26になる、といった具合です。JavaScriptには2つの方式があります。encodeURIComponentは&、=、?、/ といった予約された区切り文字を含むほぼすべてをエスケープするため、クエリ文字列のパラメータのような単一の値に適しています。一方、encodeURIは完全なURLの構造を表す文字をそのまま残すため、アドレスが使用可能な状態を保ちます。
値をクエリ文字列に安全に挿入したり、特殊文字やUnicodeが壊れたリンクをデバッグしたり、エンコードされたリダイレクトURLやトラッキングURLが実際に何を含んでいるかを読み解いたりするのにお使いください。Decodeに切り替えると%20などを読める文字に戻せます。文字列がどのように生成されたかに合わせてComponentまたはFull URLのスコープを選択し、スペースがプラス記号として送信されたフォーム形式のクエリ文字列をデコードするときは「+ as space」を有効にしてください。
encodeURIComponentは予約された区切り文字 &、=、?、/ をエスケープしますが、encodeURIはそれらをそのまま残します。単一の値にはComponentを、完全なアドレスにのみFull URLをお使いください。
よくある質問
encodeURIComponentとencodeURIの違いは何ですか?
encodeURIComponentは&、=、?、/ といった予約されたURL文字をエスケープするため、クエリ文字列のパラメータ1つのような単一の値を対象としています。encodeURIはこれらの構造を表す文字を保持するため、完全なURLを壊さずにエンコードすることを対象としています。
なぜ+はURL内でスペースを意味することがあるのですか?
application/x-www-form-urlencodedのクエリ文字列(HTMLフォームがデータを送信する方式)では、スペースは%20ではなく+としてエンコードされます。標準のURLデコーダーは+をスペースに戻さないため、フォーム形式のクエリ文字列をデコードする際は「+ as space」オプションを有効にしてください。
デコード時の「Malformed percent-encoding」とはどういう意味ですか?
入力に、2桁の有効な16進数字が続いていない%が含まれているか、%E0%A4%Aのような不完全なマルチバイトシーケンスが含まれていることを意味します。デコーダーはそれらのバイトを解釈できないため、部分的で壊れたテキストを返す代わりにエラーを報告します。