URL エンコード/デコード

URL内の特殊文字をエンコード、またはパーセントエンコードされたURL文字列をデコード。Web開発とAPI作業に必須。

使い方

  1. 入力エリアにテキストまたはURLを入力または貼り付けます
  2. 「エンコード」で特殊文字をパーセントエンコード、「デコード」で元に戻します
  3. 結果をコピーしてアプリケーションで使用します

よくある質問

  • URLエンコードとは何ですか?

    URLエンコード(パーセントエンコードとも呼ばれる)は、特殊文字をパーセント記号とその16進数値に置き換えます。例えば、スペースは%20になります。

  • URLエンコードはいつ必要ですか?

    URLパラメータ、クエリ文字列、またはHTTP経由で送信されるフォームデータに特殊文字を含める場合にURLエンコードします。

  • encodeURIとencodeURIComponentの違いは何ですか?

    encodeURIはURI全体をエンコードし、:、/、?などの文字を保持します。encodeURIComponentは文字、数字、一部の特殊文字以外をすべてエンコードし、個々のパラメータ値のエンコードに適しています。

  • Unicode文字に対応していますか?

    はい、Unicode文字はまずUTF-8バイトにエンコードされ、次に各バイトがパーセントエンコードされます。

URLエンコードとは何か

URL(Uniform Resource Locator)は、使用できる文字がRFC 3986で厳密に定められています。アルファベット(A〜Z、a〜z)、数字(0〜9)、そして一部の記号(-_.~)のみが「予約なし文字」として、エンコードせずにURLに含めることができます。

スペース、日本語文字、&=#などは特別な意味を持つか、URLの構文と衝突するため、パーセントエンコーディングという形式に変換する必要があります。

パーセントエンコーディングの仕組み

パーセントエンコーディングは非常にシンプルな仕組みです。エンコードしたい文字をUTF-8バイトに変換し、各バイトを%XX(XXは16進数)の形式で表します。

例を見てみましょう:

  • スペース → %20(または+
  • &%26
  • =%3D
  • #%23
  • 「東京」→ %E6%9D%B1%E4%BA%AC(UTF-8の3バイトずつエンコード)

日本語などのマルチバイト文字は、UTF-8では1文字あたり3バイトを使用するため、パーセントエンコード後は文字1つが%XX%XX%XXの9文字になります。

encodeURIとencodeURIComponentの違い

JavaScriptには2つのURLエンコード関数があり、使い分けが重要です。

encodeURI()

URL全体をエンコードすることを想定しています。URLの構造を保つために必要な文字(:, /, ?, #, &, =など)はエンコードしません。

encodeURI("https://example.com/search?q=東京&lang=ja")
// → "https://example.com/search?q=%E6%9D%B1%E4%BA%AC&lang=ja"

encodeURIComponent()

クエリパラメータの値など、URLの一部をエンコードするために使います。/&なども含めてほぼすべての特殊文字をエンコードします。

encodeURIComponent("東京 & 大阪")
// → "%E6%9D%B1%E4%BA%AC%20%26%20%E5%A4%A7%E9%98%AA"

実践的な使用例

APIリクエストの構築

検索クエリやフィルタ条件をURLパラメータとして送る場合:

GET /api/search?q=東京%20タワー&category=観光地

リダイレクトURLの扱い

OAuth認証やログイン後のリダイレクト先URLをパラメータとして含める場合、URLをそのまま埋め込むと&などが誤解釈されます。encodeURIComponent()でエンコードすることで安全に扱えます。

ベストプラクティス

  • クエリパラメータの値は必ずencodeURIComponent()でエンコードする
  • URLを組み立てる際は可能な限りURLクラスやURLSearchParamsを使用する(自動エンコード対応)
  • 受け取ったURLパラメータは必ずデコードしてから処理する