基本的な違い
- UTF-8: 可変長エンコーディングで、1〜4バイトを使用
- UTF-7: 7ビットASCII文字のみを使用し、非ASCII文字を特殊なエスケープシーケンスでエンコード
用途
- UTF-8: 現在最も広く使われているUnicodeエンコーディング方式
- UTF-7: 主に7ビットのクリーンな転送チャネル(古い電子メールシステムなど)用に設計
特徴比較
UTF-8
- ASCII互換(ASCII文字は1バイトで表現)
- 世界中のほぼすべての文字をサポート
- バイトオーダーマーク(BOM)は必須ではない
- Webやほとんどのモダンなシステムで標準
UTF-7
- ASCII互換だが、非ASCII文字に「+」記号で始まる特殊なエンコードを使用
- Base64エンコーディングを使用して非ASCII文字を表現
- 現在はほとんど使用されていない(セキュリティ上の問題がある)
- 7ビット環境での互換性のために設計された
セキュリティ
- UTF-7はセキュリティ上の脆弱性があり、クロスサイトスクリプティング(XSS)攻撃に悪用される可能性がある
- UTF-8はより安全で、現代のシステムでは推奨されている
エンコーディング例
「こんにちは」の場合:
- UTF-8: E3 81 93 E3 82 93 E3 81 AB E3 81 A1 E3 81 AF
- UTF-7: +MEMwYzDDMEkwxTBP-