close
コンテンツにスキップ

UTF-7

出典: フリー百科事典『ウィキペディア(Wikipedia)』

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で埋められる。
Hex digit 0 0 A 3  
Bit pattern000000001010001100
Index 0 10 12
Base64-Encoded A K M

変換方法

[編集]

エンコード

[編集]

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

£ ≡ 0x00A30000 0000 1010 0011 UTF-16BEによる文字コードのビット表記
†≡ 0x20200010 0000 0010 0000
£†0000000010100011 0010000000100000文字列「£†」のビット表記(順に連結)
0000000010100011 0010000000100000000000 001010 001100 100000 001000 00上位から6ビット毎の区切りで分割
000000 001010 001100 100000 001000 00000000 001010 001100 100000 001000 000000最下位も6ビットになる様に0で埋める
000000 001010 001100 100000 001000 000000AKMgIAbase64の変換表に従いエンコード

デコード

[編集]
AKMgIA000000 001010 001100 100000 001000 000000base64の変換表に従いデコード
000000 001010 001100 100000 001000 0000000000000010100011 0010000000100000 0000上位から16ビット毎の区切りで分割
0000000010100011 0010000000100000 00000000000010100011 0010000000100000最下位の0が連続するビット列は削除
0000 0000 1010 00110x00A3 ≡ £ 16ビット毎にUTF-16BEの文字コードとして解釈
0010 0000 0010 00000x2020 ≡†
0000000010100011 0010000000100000£†デコード結果

修正UTF-7

[編集]

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

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

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

  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の規格)

脚注

[編集]
  1. RFC 2060, 5.1.3. メールボックスの国際的な命名規則 (日本語訳は http://www.lins.jp/~obata/imap/rfc/rfc2060ja.html#s5.1.3 より引用)