電子メールで「バイナリ」を送れないってどういう意味?
インターネット上の電子メール (いわゆる e-mail) では、送れる情報は 「テキスト」だけで、「バイナリ」は送れないとされています。 ここでいう「テキスト」と「バイナリ」の意味について、説明します。
電子メールでバイナリデータを送れない理由と、その回避法
最初、電子メールは、ASCII コードで書かれたテキスト、 言い換えれば、英語で書かれた文書をやりとりする目的で開発されました。 ASCII コードで書かれたテキストとはすなわち、 ASCII コードで印字可能文字にあたる数 (32〜126) と、 少数の制御コード (改行など) からできているデータです。
しかし、バイナリデータは 0〜255 の範囲の数をすべて使いますので、 0〜31 と 127〜255 の数についてはうまく送れない可能性があります。 可能性がある、と今書きましたが、これは、 インターネットを構成するコンピュータには様々なものがあり、 その上で動いているメール送配プログラムにも様々なものがあるので、 どうなるか見当がつかない、ということです。
また、現在のメールシステムは、ASCII コードだけではなくて漢字や 非英語アルファベットなども扱うことができるように拡張されています。 このとき、拡張のやり方が、従来からあるシステムに乗せるだけで、 総入れ替えしなくても済むような設計になっています。このために、 日本語は ISO-2022-JP というコード体系を用いることになっています。 メール送信プログラムは、そのプログラムが走っているコンピュータの 漢字コードを ISO-2022-JP に変換して送信し、受信プログラムは、 受け取った ISO-2022-JP コードを、 受信プログラムが走っているコンピュータが用いている漢字コードに変換して 表示する、といったことを行います。 このおかげで、ASCII コードしか受け付けないメール送配プログラムを 途中で経由しても漢字データが正しく伝わり、また、 異なる漢字コード (たとえば、シフト JIS と EUC) を用いるコンピュータの間で正しく漢字データをやりとりすることができるのです。
しかし、バイナリデータを送りたい場合は、この仕組みがじゃまになります。 たとえば、EUC を使うコンピュータから ShiftJIS を使うコンピュータに、 A1 A2 [16 進数] というバイナリデータを送ったとします。すると、 A1 A2 は「、」という文字に解釈できるので、受け側では「、」の ShiftJIS コードである 81 41 [16 進数] というふうに受け取ってしまいます。
漢字コードが正しく伝わる、といっても、 すべての文字についてうまく変換してくれるわけではありません。 半角カタカナは全く使えませんし、 JIS コード 222E (シフト JIS コード 81AC、 区点コード 00214) 以降の記号や罫線は使わない方がいいでしょう。 文字化けする可能性があります。 また、半角の円記号はバックスラッシュに化ける可能性があります。 通常の漢字は OK です。
!doctype>