[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


MIME の登場

絵や音声などを配送したい、地域化された RFC 822 の架け橋となる規格が欲し いなどの要望を満たすために、1992年に MIME が規定されました。MIME では、 テキストの文字コードを charset というパラメータに指定できます。たとえば、 ISO-2022-JP は以下のように指定します。

Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

日本語のテキスト

この charset は役に立つのでしょうか? もちろんです。charset は、インター フェイスに正しくテキストの文字コードを伝える役割を果たします。ノルウェー の人が ISO-8859-1 で日本にメッセージを送ってきたとしましょう。ISO-8859-1 に対応しているインターフェイスなら、対応するフォントで表示すればいいし、 対応していないなら無視すればいいのです。Mew では、Mule の内部コードに変 換する関数の引数に charset を利用しています。

「ISO-2022-JP の上位互換規格であり、さまざまな文字コードを格納できる ISO-2022-JP-2 などを使えば charset など要らない。なぜなら ISO-2022-JP-2 自体に文字コードの情報が含まれているから」という人がいます。しかし、これ らの人は MIME を理解できているとは思えません。

確かに理想的にいえば、この主張は正しいのです。しかし、MIME は現実主義で す。MIME はユーザが明日から ISO-2022-JP-2 を使うようになるという大胆な仮 定はしていません。また、世の中に存在する脆弱な配送プログラムでも安定して 動くように考慮されています。世の中は、そんなにお行儀のよいプログラムばか りではないし、たくさんの資源を使えるほど豊かでもないのです。「明日から UNICODE を使え」と言われたらいやでしょう?

MIME は、さまざまに地域化されたメッセージの架け橋として charset を用意し ました。MIME で増えた作業は、charset の挿入だけであり、今まで通り我々は ISO-2022-JP を使えます。ISO-2022-JP-2 を標準にしたいなら、ISO-2022-JP-2 をデフォルトで使う地域を広げていけばよいのです。この意味で、 ISO-2022-JP-2 と MIME は相反してはなく、逆に、ISO-2022-JP-2 の普及のため に MIME を利用できると言えます。もちろん文字コードの符号化方式である ISO-2022-xx に charset という単語が相応しくないのは、MIME の開発者も認め ているところです。

MIME を使えば、非 ASCII 文字を ASCII 文字列に符号化し、ヘッダに挿入でき ます。このような枠組で、電子メールの配送プログラムの誤動作を防止し、また、 ヘッダに英語以外の言語を書くことを実現しているのです。もう、Subject: に 「日本語を書いてはいけません」なんて言わなくてよくなりました。:)

MIME は地域化された RFC 822 を禁止する規格ではありません。よって、MIME のインターフェイスは、以下のような動作が望まれています。

読むとき

  1. ユーザがデフォルトの charset を選べるようにしておく。
  2. MIME-Version: がないメッセージの場合は、本文をデフォルトの charset とし て扱う。
  3. MIME-Version: があり、Content-Type: がない場合は、US-ASCII として扱う。
  4. MIME-Version: と Content-Type: がある場合は、Content-Type: に指示された charset を利用する。

書くとき

  1. MIME-Version: と Content-Type: Text/Plain の charset を必ず付ける。
  2. charset には、最小限の文字集合を選ぶようにする。たとえば、英語だけなら US-ASCII を選ぶようにする。これを守らないと、読めるべきメッセージが読め なくなる可能性がある。たとえば、US-ASCII だけなのに、ISO-2022-JP と書い てあると、US-ASCII にしか対応してないメーラで読めないかもしれない。

スプールやフォルダに ISO-2022-JP を EUC-Japan に変更して格納する場合は、 無条件に変換してはいけません。きちんと charset を確かめ、ISO-2022-JP だ けを EUC-Japan に変換するようにして下さい。

ヘッダに非 ASCII 文字を挿入する機能は MIME の一機能ですが、実際には、 MIME-Version: フィールドは必要ありません。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]