modified UTF-7

UTF-7をやや変形したエンコード方式。Maildir形式のフォルダに多国語を使用するためなどに用いられており、imap-utf-7などとも呼ばれる。ディレクトリ構造表記に用いられる特殊な文字(例えば、"/")がエンコード後の文字列に現れないようにUTF-7をアレンジしてある。

エンコード方法 (赤字はUTF-7との相違点)

  1. 下記の文字(文字セットD)は、BASE64エンコードせず、8bitで出力する。
      0-9 A-Z a-z ' ( ) , - . / : ? 及び、スペース・タブ
  2. 下記の文字は(文字セットO)、BASE64エンコードしても、直接出力してもよい。
      ! " # $ %  * + ; < = > @ [ ] ^ _ ' { | }
  3. 上記以外の文字で構成される文字列は、modified BASE64エンコードし、& に続けてBASE64文字列を出力する。但し、BASE64文字列の文字数が4の倍数にならない場合でも、PAD文字は出力しない。
  4. modified BASE64を構成する文字は、下記の文字(文字セットB)である。
      A-Z a-z 0-9 + ,
  5. BASE64文字列に続けて、文字セットB自身を出力する場合は、- を出力してから後続文字(文字セットB)を出力する。
  6. BASE64文字列に続けて、文字セットB以外を出力する場合は、そのまま後続文字を出力する。
  7. BASE64文字列に続けて、改行(CRまたはLF)を出力した場合、次の行にBASE64文字列を出力する前には、再度 + を出力する。
  8. 特例として、文字 & を単独でエンコードする場合は、&- を出力してもよい。

デコード方法

  1. + が現れるまで入力文字をそのまま出力する。
  2. + が現れたら、文字セットB以外が現れるまでmodified BASE64デコードして出力する。
  3. 現れた非文字セットBが、- ならばその文字は削除する。