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を即座にエンコード・デコードできます。