seclan のほえほえルーム

| |

UTF-7 への変換方法

・
2000/11/22 []

 UTF-7 への変換方法は次の通りです。ただし U を UCS または Unicode のコードポイントを表すことにします。また Bxx という表現は左にある U の xx ビット目の値をあらわしています。数字の中の _ は見やすくするために便宜上挿入した記号です。

変換方法

  1. 次の文字集合を定義します。
    名称 定義される文字群
    set_DABC..XYZabc..xyz012..789'(),-./:?
    set_O!"#$%&*;<=>@[]^_`{|}
    set_BABC..XYZabc..xyz012..789+/

  2. SPC (0x20), TAB (0x09), CR (0x0d), LF (0x0a) は、そのまま使用することが許されます。
  3. set_D に出現する文字はそのまま使用することが許されます。また同様に set_O の文字も許されますが、mail システムによっては支障が出ることがあります。
  4. それ以外の文字は、Unicode 文字列として set_B で示される文字を使って符号化します。符号化は UTF-16 で示される 16bit 単位の Unicode 文字列を基本として、base64 (RFC2045) エンコードをします。ただし、バイトが足りなくなったときに付加される '=' 記号は使用せずに、不足した場合は、ビット値 0を必要数補って符号化します。デコードされたときの最終文字が完全な Unicode をなしていないものは捨てます。もしそれが 0 でないなら、不正な形式ということになります。
     符号化した場合、それを表すために先頭にシフト文字 '+' をつけます。この '+' の文字が (修正された) base64 エンコードの開始を示し、set_B 以外の文字 (例えば、CR LF などの制御文字も含む) が出現するまでが符号化されていることを示します。また明示的に終了を示すために、'-' 記号を使うことができます。この場合には '-' 記号は捨てられます。
     特例として、'+-' は '+' 文字を表すことにします。'+' の後に、set_B または '-'以外の文字が続いた場合不正になります。

変換例

  • 漢字 (0x226F 0x575B) →
    00100010_01101111 01010111_01011011 → 
    001000 100110 111101 010111 010110 11 →
    001000 100110 111101 010111 010110 110000 →
    8 38 61 23 22 48 → 変換 → 
    I m 9 X W w →
    "+Im9XWw-" (すなわちバイト列 2B496D395857772D)


by seclan

関連


| |

 

配信

6.22 msec