URL エンコード/デコード
URL内の特殊文字をエンコード、またはパーセントエンコードされたURL文字列をデコード。Web開発とAPI作業に必須。
使い方
- 入力エリアにテキストまたはURLを入力または貼り付けます
- 「エンコード」で特殊文字をパーセントエンコード、「デコード」で元に戻します
- 結果をコピーしてアプリケーションで使用します
よくある質問
-
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パラメータは必ずデコードしてから処理する