Toolify

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 でエスケープされます。

入力データはサーバーに送信されますか?

いいえ。エンコード・デコードはすべてブラウザ内です。

関連ツール

最終更新: