基本的な違い

  • 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-