URLエンコード・デコードツールの使い方
本ツールを使えば、テキストのURLエンコード(パーセントエンコーディング)とデコードを簡単に行えます。以下の手順でご利用ください。
- モードを選択:画面上部のタブから「エンコード」「デコード」「URL全体エンコード」のいずれかを選択します。
- テキストを入力:左側の入力欄に変換したいテキストまたはURLエンコード済み文字列を貼り付けます。
- 結果を確認:入力と同時に右側の出力欄にリアルタイムで変換結果が表示されます。
- コピー:出力欄右上のコピーボタンをクリックすると、変換結果がクリップボードにコピーされます。
すべての処理はブラウザ上で完結し、サーバーへのデータ送信は一切行いません。機密性の高いURLやパラメータも安心して変換できます。
URLエンコード(パーセントエンコーディング)の仕組み
URLエンコードは、正式には「パーセントエンコーディング(Percent-Encoding)」と呼ばれ、RFC 3986(Uniform Resource Identifier: Generic Syntax)で標準化されています。URLに含められない文字を%記号と2桁の16進数で表現する仕組みです。
具体的には、対象の文字をまずUTF-8でバイト列に変換し、そのバイトごとに%XX(XXは16進数の大文字表記)に置き換えます。例えばスペース(0x20)は%20に、アンパサンド(&, 0x26)は%26になります。この変換により、URL構文で特別な意味を持つ文字や、ASCII範囲外の文字をURL内に安全に含めることができます。
エンコードされる文字とされない文字
RFC 3986では、URLに直接使用できる文字(非予約文字)と、URL構文上の意味を持つ文字(予約文字)を明確に定義しています。
- 非予約文字(エンコード不要):英字(A-Z, a-z)、数字(0-9)、ハイフン(-)、ピリオド(.)、アンダースコア(_)、チルダ(~)
- 予約文字(用途によりエンコードが必要):
: / ? # [ ] @ ! $ & ' ( ) * + , ; = - その他の文字(常にエンコードが必要):日本語・中国語などの非ASCII文字、スペース、制御文字など
予約文字は、URL構文の一部として使用する場合はエンコードしませんが、データ(クエリパラメータの値など)として使用する場合はエンコードが必要です。この区別がencodeURIComponentとencodeURIの違いにつながります。
encodeURIComponent vs encodeURI vs escape の違い
JavaScriptにはURL関連のエンコード関数が3種類あります。それぞれの特徴と使い分けを理解することが重要です。
-
encodeURIComponent():最も広範囲にエンコードする関数です。英数字と- _ . ! ~ * ' ( )以外のすべての文字をエンコードします。クエリパラメータの値やパスの一部分など、URLの「部品」に使います。
例:encodeURIComponent("a=1&b=2")→a%3D1%26b%3D2 -
encodeURI():URL全体の構造を保持しつつエンコードします。: / ? # & = @ + $などの予約文字はそのまま残ります。完全なURLを渡す場合に使います。
例:encodeURI("https://example.com/検索?q=テスト")→https://example.com/%E6%A4%9C%E7%B4%A2?q=%E3%83%86%E3%82%B9%E3%83%88 -
escape()(非推奨):古い関数でUTF-8ではなくUCS-2ベースのエンコードを行います。%uXXXX形式を使用し、国際化対応に問題があるため、現在は使用すべきではありません。代わりにencodeURIComponentを使ってください。
日本語URLのエンコード(UTF-8とパーセントエンコーディング)
日本語をURLに含める場合、文字はまずUTF-8でバイト列に変換されます。UTF-8では日本語の多くの文字(ひらがな・カタカナ・漢字)は3バイトで表現されるため、1文字が3つの%XXに変換され、結果として9文字分のエンコード文字列になります。
例えば「あ」はUTF-8で0xE3 0x81 0x82の3バイトとなり、%E3%81%82と表現されます。「東京」であれば%E6%9D%B1%E4%BA%AC(18文字)になります。最近のブラウザはアドレスバーに日本語を表示しますが、実際のHTTPリクエストではパーセントエンコーディングされた形式で送信されています。
実務での活用シーン
URLエンコードは日常のWeb開発で頻繁に必要になります。主な活用シーンをご紹介します。
- APIクエリパラメータ:REST APIのリクエストで、検索キーワードやフィルター条件に日本語・特殊文字を含める場合。例:
?q=%E6%9D%B1%E4%BA%AC&category=%E9%A3%9F%E4%BA%8B - リダイレクトURL:OAuth認証のコールバックURLやログイン後のリダイレクト先URLをパラメータとして渡す場合。URL内にURLを含めるため、二重エンコードに注意が必要です。
- メール内リンク:
mailto:リンクに件名(subject)や本文(body)を含める場合。日本語の件名・本文をURLエンコードして指定します。 - Cookie・ストレージ:CookieやlocalStorageに非ASCII文字を含む値を保存する際、エンコードが必要になる場合があります。
- HTMLフォーム送信:
application/x-www-form-urlencoded形式でフォームデータが送信される際、自動的にURLエンコードが適用されます。スペースが+になる点がRFC 3986との違いです。
よくある質問(FAQ)
URLエンコードとは?
URLエンコード(パーセントエンコーディング)とは、URLに含められない文字(日本語・スペース・特殊記号など)を「%XX」形式の16進数表現に変換する仕組みです。RFC 3986で標準化されており、Webブラウザやサーバーが正しくURLを解釈するために不可欠な技術です。
encodeURIComponentとencodeURIの違いは?
encodeURIComponentはクエリパラメータの値など部分的な文字列に使い、スラッシュ(/)やコロン(:)も含めほぼすべての特殊文字をエンコードします。一方encodeURIはURL全体に使い、URLの構造を示す文字(:, /, ?, #, &, = など)はエンコードせず保持します。用途に応じて使い分けることが重要です。
日本語URLはどうエンコードされる?
日本語はまずUTF-8でバイト列に変換され、その各バイトが%XX形式にエンコードされます。例えば「あ」はUTF-8で0xE3 0x81 0x82の3バイトとなり、%E3%81%82と表現されます。ひらがな・カタカナ・漢字はいずれも3バイトになるため、1文字あたり9文字のエンコード文字列になります。
パーセントエンコーディングとは?
パーセントエンコーディングはURLエンコードの正式名称で、パーセント記号(%)に続く2桁の16進数で1バイトを表現します。RFC 3986で定義されたこの方式により、ASCII文字以外の文字やURL内で特別な意味を持つ予約文字を安全にURLに含めることができます。
URLエンコードが必要な場面は?
主にAPIのクエリパラメータに日本語や特殊文字を含める場合、リダイレクトURLをパラメータとして渡す場合、HTMLのメールリンク(mailto:)に件名や本文を含める場合、Cookieに非ASCII文字を保存する場合などにURLエンコードが必要です。