本文へスキップ

URLエンコーダー・デコーダーベータ

URLやクエリ文字列をエンコード・デコードします。encodeURIComponentとencodeURIの違いを例で確認でき、完全なURLの構造も分析できます。

方向
0文字 · 0行
エンコード方式
encodeURIComponentは /, ?, &, # のようなURLの区切り文字も含めてすべてエスケープするため、クエリパラメータの値ひとつをエンコードするのに使います。encodeURIはこれらの区切り文字はそのままにし、それ以外だけをエスケープするため、URL全体を扱うのに使います。例:「a b/c?d」→ componentは「a%20b%2Fc%3Fd」、fullは「a%20b/c?d」。

0文字 · 0行

URL構造の分析

URL構造の分析

完全なURLを入力すると、プロトコル・ホスト・パス・クエリパラメータに分けて表示します。

https://example.com/path?query=1&lang=ja

使い方

エンコードタブでテキストやURLの一部を入力すると、その下に結果が表示されます。デコードタブで %E3%81%82 のようなエンコードされた文字列を貼り付けると、元の文字に戻ります。入力すると同時に結果が更新され、隣のコピーボタンでそのまま取得できます。

encodeURIComponentとencodeURIの違い

どちらの関数もURLに使えない文字を「%」に続けて16進数コードを付ける形式(パーセントエンコーディング)に変換しますが、エスケープする範囲が異なります。

  • encodeURIComponent(値ひとつ): /、?、&、#、:、@ などURLの区切り文字として使われる文字まですべてエスケープします。クエリパラメータひとつの値のように、URLの「一部」を作るときに使います。例えば検索語 a/b&c をクエリの値に入れる場合、a%2Fb%26c のようにエンコードしないと、& が次のパラメータの区切りと誤認されてしまいます。
  • encodeURI(URL全体): すでに /、?、&、# などで構造ができている完全なURLを扱うときに使います。これらの区切り文字はそのままにし、空白や非ASCII文字などそれ以外だけをエスケープします。完全なURLにencodeURIComponentを使うと、:// の / や ? までエンコードされてしまい、URLが壊れます。

例えば a b/c?d を両方の方式でエンコードすると結果が異なります。componentは a%20b%2Fc%3Fd、fullは a%20b/c?d になります。どちらを使うかは、「今作ろうとしているのがURLの一部か、完全なURLか」で判断してください。

+ を空白として扱う(application/x-www-form-urlencoded)

HTMLの <form> がGETやPOSTで送信する値は application/x-www-form-urlencoded 方式を使いますが、この方式では慣習として空白を %20 ではなく + でエンコードします。「+ を空白として扱う」オプションをオンにすると、エンコード時には %20 の代わりに + を使い、デコード時には + を空白として解釈します。フォーム送信データや application/x-www-form-urlencoded のリクエストボディを扱うときだけオンにし、通常のURLパスやファイル名を扱うときはオフのままにしてください。オフのままなら + はそのままの文字として扱われます。

URL構造の分析

分析欄に完全なURL(https:// などプロトコルを含む)を貼り付けると、プロトコル、ホスト、パス、ハッシュ、そしてクエリパラメータを表に分けて表示します。クエリの値は自動的にパーセントデコードされるため、?q=hello%20world のようにエンコードされたクエリ文字列も読みやすい値として確認できます。同じキーが複数回出てくる場合(?tag=a&tag=b)は、それぞれ別の行として表示されます。

よくあるエラー

パーセントエンコーディングは % の後に16進数2桁が続く必要があります(%20 のように)。単独の %、16進数でない文字(%zz)、またはマルチバイト文字の%XXの組み合わせが崩れている場合、デコードできないというエラーが表示されます。エンコードに使った方式(component/full)と異なる方式でデコードすると意味が変わることがあるため、同じ方式を選んでください。

プライバシー

入力した内容はこのブラウザの中だけで処理され、サーバーには送信されません。ページを閉じるとすべての内容が消えます。

参考資料

よくある質問

encodeURIComponentとencodeURIはどう使い分ければいいですか?

encodeURIComponentは /, ?, &, # のようなURLの区切り文字も含めてすべてエスケープするため、クエリパラメータの値のようにURLの「一部」を作るときに使います。encodeURIはこれらの区切り文字はそのままにし、それ以外だけをエスケープするため、すでに構造を持つ完全なURL全体を扱うときに使います。クエリの値にencodeURIを使うと、値の中の&や=が区切り文字と誤認される恐れがあるので注意してください。

デコード時に「パーセントエンコーディングが正しくありません」というエラーが出るのはなぜですか?

パーセントエンコーディングは %XX(XXは16進数2桁)の形式である必要があります。単独の%、16進数でない文字が続く%、またはマルチバイト文字の%XX%XXの組み合わせが崩れていると、元の文字に戻せずこのエラーが表示されます。

「+ を空白として扱う」オプションはいつオンにすればいいですか?

HTMLフォームがGETやPOSTで値を送信するとき(application/x-www-form-urlencoded)は、慣習として空白を%20ではなく+でエンコードします。フォームから来たクエリ文字列やリクエストボディを扱うときにこのオプションをオンにすると、+を正しく空白として解釈できます。通常のURLパスを扱うときはオフのままにしてください。

URL構造の分析では何が表示されますか?

https:// で始まる完全なURLを入力すると、プロトコル、ホスト(ドメインとポート)、パス、ハッシュ(#以降)、そしてクエリパラメータをキーと値の表で表示します。値は自動的にパーセントデコードされるため、エンコードされたクエリ文字列もそのまま読みやすい形で確認できます。