URLエンコード/デコード — UTF-8対応
テキストをURLに安全に埋め込むためのエンコード、または逆方向のデコード。クエリパラメータやフォームデータの変換に最適。
仕組み
URLエンコードの仕組み
URLは限定された ASCII 文字しか使えません。それ以外(スペース・濁音付き文字・漢字・絵文字・特殊記号)を含めるには、各バイトを %XX 形式(XXは16進バイト値)に置き換えます。スペース → %20、スラッシュ → %2F、漢字「漢」 → %E6%BC%A2(UTF-8バイトのパーセントエンコード)となります。
本ツールはブラウザ内蔵の encodeURIComponent / decodeURIComponent を使用しています。これは「予約外文字(英数字と - . _ ~)以外を全てエスケープ」する標準的な動作で、クエリパラメータやフォームデータの変換に適切です。
encodeURI と encodeURIComponent の違い
JavaScriptには2種類のエンコーダがあります。encodeURI は URL構造文字(/ ? & # = + 等)はエスケープしないため、完全なURL全体に使います。encodeURIComponent はそれらも含めて全てエスケープするため、クエリ値などURL内の「値部分」に使います。
本ツールは encodeURIComponent を採用しています。任意のテキストをURLに埋め込む際の安全側の選択です。完全なURL構造を保ったままエンコードしたい場合は、必要な部分だけを切り出してエンコードしてください。
よくある落とし穴
URL内の「+」: 一部サーバーは + をスペースとして扱います(古いフォームエンコーディングの名残)。encodeURIComponent は + をそのまま残しますが、サーバー側で空白として解釈される可能性があるため、データとして送るなら「+」 → %2B に手動置換するのが安全です。
二重エンコード: 既にエンコード済みの文字列を再度エンコードすると、% が %25 に変換され「%20」 → 「%2520」のように二重化します。入力が既にエンコード済みかを必ず確認してください。
長さの増加: UTF-8マルチバイト文字は1文字あたり3〜4個の%コードに展開されます。日本語100文字は容易にURLで900文字以上になります。
よくある質問
›「%20」がスペースに変換されないのですが?
本来は変換されます。「+」がURLに含まれていてスペースとして扱われている可能性があります(古いフォームエンコーディングの仕様)。+を空白に置換してから試してください。
›絵文字に対応していますか?
はい。絵文字はUTF-8バイト列としてエンコードされます(多くは1絵文字あたり4バイト = 4個の%コード)。
›URLエンコードとHTMLエンコードの違いは?
URLエンコードはURL用の%表記、HTMLエンコードは<>等のHTML用エスケープです。文脈ごとに必要なエスケープが異なります。
›いつエンコードすべき?
URLのクエリパラメータ・パスセグメントにユーザー入力を含める時、フォームデータを送信する時。すでに構築済みのURL全体を再エンコードすると二重化するので避けてください。
›デコードでエラーになる原因は?
「%」の後ろに無効な16進文字がある場合に発生します。「%」自体をURLに含めるなら「%25」と書く必要があります。
›ブラウザは自動でエンコードしますか?
はい。URL や URLSearchParams APIを使うとブラウザが自動処理します。本ツールはアドホックな手動変換用です。
›エンコード不要の文字は?
英数字(A-Z、a-z、0-9)と - . _ ~ のみ。それ以外は encodeURIComponent でエスケープされます。
›入力データはサーバーに送信されますか?
いいえ。エンコード・デコードはすべてブラウザ内です。
関連ツール
最終更新: