ヘッダのデコード

戻る

そもそも、メールのヘッダ部にエンコードの必要な文字、即ち、全角文字を用いること自体が避けるべきことである。しかしながら、標題に日本語が使えたほうが読み易いことは明らかであり、多くのメールソフトがこれをサポートしていることが現実であるため、ヘッダのデコード機能は、できれば実装しておきたいものである。

本文が変換(エンコード)されている場合、その状況はヘッダ部に記述されることになっている。ヘッダが変換(エンコード)されている場合は、この限りではなく、特殊な文字列による表現が採られる。つまり、特別な文字セットやエンコードが行われている部分に、印がつけられている。

  1. エンコード部の始まりは「=?」で示される。
  2. 続いて、文字セット(charset)が記述される。
    JISならば、「ISO-2022-JP」である。
  3. 区切りとして、「?」。
  4. さらに、エンコード方式(encoding)が記述される。
    BASE64ならば「B」、Quoted-Printableならば「Q」
  5. 区切りとして、「?」。
  6. エンコードされたテキスト。
  7. エンコード部の終わりが「?=」で示される。

たとえば、「こんにちは」という文字が、JIS文字セット・BASE64エンコードされている場合、次のようになる。

=?ISO-2022-JP?B?GyRCJDMkcyRLJEEkTxsoSg==?=
=?ISO-2022-JP?B?GyRCJDMkcyRLJEEkTxsoSg==?=
1234567
StartCharacter SetDelim.EncodeDelim.TextEnd

この例では、「GyRCJDMkcyRLJEEkTxsoSg==」は「こんにちは」がエンコーディングされたものである。JIS文字は、やはり特殊なキャラクタがその始まりと終わりに付けられるため、多くの日本語部分は、「=?ISO-2022-JP?B?GyRC」で始まることになる。


ProtocolNameRFC
MIMEMIME Part 3 ; Message Header Extensions for NON-ASCII Text2047