ブログに戻る
url 2025-01-28

URLエンコーディング:Web開発で重要な理由

URLエンコーディング(パーセントエンコーディング)、予約文字、Web開発でのよくある落とし穴を理解する。

URLエンコーディング(パーセントエンコーディング)は、URI(Uniform Resource Identifier)に情報をエンコードするメカニズムです。URLがインターネット上で正しく送信されることを保証するために不可欠です。

URLにエンコーディングが必要な理由

URLには限られたASCII文字のみを含めることができます。このセット外の文字や、URLで特別な意味を持つ文字はエンコードする必要があります。

予約文字

以下の文字はURLで特別な意味を持ち、データとして使用する場合はエンコードが必要です:

: / ? # [ ] @ ! $ & ' ( ) * + , ; =

encodeURI() vs encodeURIComponent()

  • encodeURI():完全なURIをエンコードし、URI構造の特殊文字を保持
  • encodeURIComponent():URIコンポーネントをエンコードし、すべての特殊文字をエンコード

経験則:パラメータ値のエンコードにはencodeURIComponent()、完全なURLのエンコードにはencodeURI()を使用。

よくある落とし穴

1. 二重エンコーディング

既にエンコードされた文字列をエンコードすると不正な結果になります。

2. スペースエンコーディング

  • %20はパスセグメントで使用
  • +はクエリ文字列で使用

3. Unicode文字

現代のブラウザはアドレスバーにUnicodeを表示しますが、実際のURLはエンコードされています。

ベストプラクティス

1. URLに含める前に必ずユーザー入力をエンコード

2. クエリパラメータ値にはencodeURIComponent()を使用

3. スペースエンコーディングの違いに注意

4. 非ASCII文字でテスト

5. エンコードなしの文字列連結でURLを構築しない

URLエンコーダー/デコーダーツールでURLを即座にエンコード・デコードできます。