メールの中を覗いてみる(その1)

 では実際にメールの中身を16進数で覗いてみましょう.図4は1通のメールのファイルを16進数でダンプ出力したものです.「こんにちは」の部分が,漢字の開始を表すコードと終わりを表すコードで囲まれていることがわかります.
 最近のメールシステムでは,7ビットだけではなく8ビットの情報をすべてやり取りできるように開発されています(これを“8ビット透過なシステム”と呼ぶことがある).シフトJIS漢字コードやEUC漢字コードを使っても漢字を送ることができるようになりつつあります.
 しかし,まだ8ビットに対応していないメールソフトを使っている方も,8ビットに対応していないメールサーバもあり得ますので,特殊な事情がない限りは標準に従いJIS漢字コードを使うようにしましょう.

〔図4〕実際のメールでのJIS漢字コード


図4

● バイナリデータを送るしくみ
 ひらがなや漢字などの文字を送るには,漢字コードを使えばよいことがわかりました.では画像や音声データ,WordやExcelなどのアプリケーションのデータといった文字以外の情報を送るにはどうしたらよいのでしょうか.
 まず,画像などのバイナリデータをBASE64エンコーディングという方法によってASCII文字に変換します.
 いったんASCII文字になってしまえば,あとはメールの文章として送信してしまえばよいのです.受け取った側では,ASCII文字列からバイナリデータに逆変換し,もとの画像データに復元します.
 BASE64のしくみを図5に示します.まず送りたいバイナリデータを2進数の羅列にします.そして,6桁ごとに区切り,この6桁をASCII文字1文字に変換します.最後に端数が出た部分は0で埋めて,ちょうど6桁で区切りがよいように調整します.
 図6は6桁の2進数とASCII文字の対応関係です.ASCII文字は128文字ありますが,その中でも文字として画面に表示可能な文字の中から64文字を使用しています.
 また,逆変換も簡単に行うことができます.図6の表を用いてASCII文字から2進数の羅列に変換します.そして得られた羅列を8ビットごとに区切ると,もとのデータに復元することができます.



〔図5〕BASE64エンコーディングによるバイナリデータ→ASCII文字変換


図5



〔図6〕BASE64の文字割当表


図6

メールのヘッダにも使われているBASE64エンコーディング
 メールの本文で漢字が使われる場合は,JIS漢字コードによってASCII文字に変換されます.SubjectやToといったメールのヘッダ情報に漢字が使われる場合は,JIS漢字コードとBASE64エンコーディングの両方を用いてASCII文字に変換されます.
 図Aはヘッダ情報に漢字を含むメールの例で,(a)はメールの生のファイルをダンプしたものです.この例では,Subjectに「テストメール」という漢字文字列を用いました.「iso-2022-jp(つまりJIS漢字コード)な文字列“テストメー
ル”をBASE64で変換すると,“GyRCJUYl.....”になります」という意味になります.
 メールのヘッダ部分ではASCII文字のすべてが使えるというわけではありません.特に漢字の始まりと終わりを表す文字はヘッダ部分では使えません.そのため,これらの文字と漢字を表すASCII文字全体をBASE64でエンコードするという方法が使われています.
〔図A〕SubjectやToなどに漢字を含むメールの例

図A


 CQ出版 TOP OPENDESIGN TOPOPENDESIGN Online目次に戻る   
Copyright CQ Publishing Co.,Ltd. 1997-2001