2000/12/22 [金]
Q-Encoding は、大部分が US-ASCII で記述されているが、一部だけ外れているというようなテキストを、ASCII に変換して扱うために作成されました。RFC2045 (MIME Part One) で定義されています。
変換方法
- あるバイト 0xBB がある時、それを '=BB' というように、'=' を先頭に付加し、次にバイトの 16 進数表記を 2 文字で記述することを変換すると定義します。ただし、16 進数表記で使用されるアルファベット部分 'A', 'B', ... は、必ず大文字を使用します。
- 次のように文字を変換します。
- 0x21('!')-0x3C('<'), 0x3E('>')-0x7E('~') の文字は ASCII でそのままの表示が可能です。(つまり Control-Code, 空白(SPC), '=', DEL を除いた部分)
- 0x09(TAB), 0x20(SPC) は、行末以外の部分ではそのまま表示が可能です。行末部分では、=09 や =20 のように変換する必要があります。
- 行末をあらわす CRLF は、そのまま変換せずに表示します。ただし、バイナリデータを変換した場合にはこの限りではありません。
- それ以外の文字は、変換します。例えば、文字として出現する '=' は必ず '=3D' に変換します。
- RFC2047 (MIME Part Three) によると、'?' と '_' の文字は、必ず '=3F' や '=5F' に変換した方が良いようです。なぜならば、MIME では '?' は '?=' のように使用されることがあり、'_' は 0x20(SPC) の代用で使用されることがあるからです。またメールメッセージヘッダではさらに使用可能文字が制限されることがあります。
- 一行は 76 文字以下である必要があります。それを超える場合には、'=' を行末に挿入して、次の行に続くことを示します。この 76 文字には改行文字は含まれませんが、'=' などの文字は含まれます。
変換例
- 漢字 (0x226F 0x575B) → 変換 →
=22=6F=57=5B
by seclan