UTF-7(ユーティーエフなな、ユーティーエフセブン)はISO/IEC 10646(UCS)とUnicodeで使える7ビット符号単位の文字符号化形式及び文字符号化スキーム。

7ビットでしか送信できない制限があるプロトコル上のメールやニュースなどの環境で、その体系上でUnicodeのメールを送信可能にするために作られた規格である。

現在では正しく実装されていないアプリケーション上でセキュリティー上の脆弱性を発生させることがあることから、あまり使われなくなっている。

IMAP4では、UTF-7を変更した規格である修正UTF-7の規格があり、この規格は2010年代現在においては頻繁に使用される。

機能

  • 62個のアルファベットと9個の記号(' ( ) , - . / : ?)はそのまま表記する。
  • それ以外の文字はUTF-16のビッグエンディアンで符号化し、修正BASE64で符号化する。修正BASE64とは=を入れないBASE64エンコーディング形式である。
  • BASE64の文字の前に「 」後ろに「-」を置く。
  • 「 」の文字自体は「 -」で表現する。

  • 「Hello, World!」は「Hello, World!」とそのまま表記できる。
  • 「1 1 = 2」は「1 - 1 = 2」になる(「 」は「 -」になる)。
  • 「£1」は「 AKM-1」になる。ポンド記号はU 00A3はBase64で表記する。あまった2ビットは0で埋められる。

変換方法

エンコード

「£†」(U 00A3 U 2020)の場合

デコード

修正UTF-7

修正UTF-7(Modified UTF-7)はIMAP4で多言語のフォルダ名(ディレクトリ名)を使用するために用いられる規格である。

  • 「&」以外の印字可能なUS-ASCII文字は必ずそのまま表記する。
  • それ以外の文字はUTF-16のビッグエンディアンで符号化し、修正BASE64で符号化する。
  • BASE64の文字の前に「&」後ろに「-」を置く。
  • 「&」の文字自体は「&-」で表現する。

この規格は、メールの一般的な利用における、下記のような背景を考慮して導入された。

  1. UTF-7 は、シフトするために文字 " " を用いる; これは、メールボックス名やUSENETニュースグループ名での " " のありふれた使用と衝突する。
  2. UTF-7 の符号化は、文字 "/" を用いる BASE64である; これは、一般的な階層区切りとしての "/" の使用と衝突する。
  3. UTF-7 は、符号化されない "\" の使用を禁じている; これは、一般的な階層区切りとしての "\" の使用と衝突する。
  4. UTF-7 は、符号化されない "~" の使用を禁じている; これは、いくつかのサーバでホームディレクトリを示すものとしての "~" の使用と衝突する。
  5. UTF-7 は、同じ文字列を表現するための、複数の別の形式を許している; 特に、印字可能な US-ASCII 文字が符号化形式で表現され得る。

すなわち修正UTF-7では、電子メールやフォルダ名一般における頻出文字を修正BASE64変換せず、 概ね平文のまま読むことが可能になる。

関連項目

  • 文字コード

出典

  • RFC 1642
  • RFC 2152
  • RFC 2060(修正UTF-7の規格)

脚注


Unicode Character Set And UTF8, UTF16, UTF32 Encoding, 59 OFF

faecherinformatikoberstufecodierungutf8start []

Unicode Utf8windows 10 Tips Ipentec

Unicode vs UTF8 Difference and Comparison

What Is The Difference Between Unicode And UTF8? (Explained) All The