URL エンコード文字列をデコード
パーセントエンコードされた文字列を元のテキストに復元します。アクセスログや受け取った URL の中身を確認するときに便利です。
このツールについて
使い方
- 「エンコード」タブ: 日本語や特殊文字を含むテキストを URL で使える形式に変換します
- 「デコード」タブ: エンコードされた文字列を元のテキストに戻します
URL エンコーディングとは
URL に直接使用できない文字 (日本語、スペース、一部の記号など) を %XX 形式に変換する仕組みです。パーセントエンコーディングとも呼ばれ、RFC 3986 で規定されています。
よくある質問
- Q. URL やテキストを貼り付けてもプライバシーは守られますか?
- A. エンコード / デコードの処理はすべてブラウザ内で実行されます。入力した URL や文字列が外部に送信されることはないため、社内向け URL やトークンを含む文字列も安心して変換できます。
- Q. 日本語を含む URL はそのまま使えないのですか?
- A. ブラウザのアドレスバーは日本語を自動でエンコードして表示することが多いですが、メールやプログラム内で URL を扱う場合は明示的にエンコードしておかないと正しく動作しないことがあります。
- Q. URL 全体をエンコードすると
://までエスケープされてしまうのですが? - A. クエリパラメータの「値」のみをエンコードするのが基本です。プロトコルやホスト名はエンコード不要のため、
?key=以降の値部分だけを貼り付けて変換してください。 - Q. 「%」を含む文字列をデコードすると失敗するのですが?
- A.
%は URL エンコードの予約文字です。リテラルの%は%25として表現する必要があります。「%50%」のような不完全な形式はデコードに失敗します。 - Q. 1度エンコードした文字列をもう1度エンコードしても大丈夫ですか?
- A. 動作はしますが、二重エンコードになります。例えば
%20がさらに%2520となり、デコード時には二度デコードしないと元の文字列に戻りません。意図しない場合は注意してください。
豆知識
なぜ URL エンコードが必要なのか
URL でエンコードせずにデータとして自由に使える文字は、RFC 3986 で定められた「非予約文字」(英数字と -._~) に限られます。 日本語やスペース、& や = などの特殊文字を URL に含めるには、 UTF-8 バイト列に変換した上で各バイトを %XX 形式に置き換える「パーセントエンコーディング」が必要です。
encodeURI と encodeURIComponent の違い
JavaScript には URL エンコード用の関数が2つあります。 encodeURI は URL 全体を対象とし、:/?# などの区切り文字はエンコードしません。 一方 encodeURIComponent はクエリパラメータの値など URL の一部を対象とし、 ほぼすべての特殊文字をエンコードします。 用途を間違えると URL が壊れる原因になります。
「%20」と「+」の違い
スペースの URL エンコードには %20 と + の2種類があります。 %20 は RFC 3986 に準拠した標準形式で、URL のパス部分に使用します。 + は HTML フォームの application/x-www-form-urlencoded 形式で使用される歴史的な表記です。 多くの Web サーバーはどちらも受け付けますが、仕様上は使い分ける必要があります。
参考リンク
- RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax
URI の公式仕様。パーセントエンコーディングの規則を定義
- encodeURIComponent() - JavaScript MDN
JavaScript の URL エンコード関数リファレンス (本ツールも利用)
- Percent-encoding - Wikipedia
パーセントエンコーディングの歴史と仕様概要
このツールの更新履歴
URL エンコード: モードごとに見出しと説明文を最適化
エンコード / デコードのそれぞれで見出しと導入文が切り替わり、目的に合ったページであることがわかりやすくなりました。
URL エンコード/デコードツールを公開