[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13. 嗚呼漢字コ・6飴ド

ここでは、非 ASCII 文字をメッセ・6飴ジで使う3源ために人々が奮闘してきた歴史を漢字 を例にΓ彊肢って振り返ります。

13.1 電子メ・6飴ルと地域化  
13.2 MIME の登Γ恐詞  
13.3 正規化の概念  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.1 電子メ・6飴ルと地域化

1982年、互換を保証するために、電子メ・6飴ルの規格 RFC822 が記述されました。 電子メ・6飴ルはアメリカ育ちであったため、残念ながら本文やヘッダには、ASCII 文字列しか格忍6飴できない規格でした。

しかし、英語以外の言語を母国語としている人達にはとても不便です。そこで、 配送に関わるヘッダはともかく、本文に母国語を格忍6飴するため RFC822 はさまざ まな国で拡張されました。

ヨ・6飴ロッパ諸国では、ウムラウ3源ト(アクセント)文字を表す8ビット1文字のコ・6飴ド Latin 1 がよく使われるよう3源になりました。Latin 1 は ISO-8859-1 と呼ばれる ことがあります。

日本では、7ビット2文字の JIS コード、UNIX でよく使われる 8ビット2文字の EUC コ・6飴ド、パソコンで使われている 8ビット2文字の SJIS コ・6飴ドが存在しま した。日本のインタ・6飴ネットの前身である JUNET の先駆者達は、配送のための コ・6飴ドとして JIS コ・6飴ドを ESC シ・6飴ケンスで切り替える、いわゆる JUNET コ・6飴 ドを選びました。

JUNET コ・6飴ドは ISO-2022-JP と呼ばれることがあります。ISO-2022-JP を使え ば、複数の文字コードを切り替えるだけでなく、使われている文字コ・6飴ドが何か という3源Γ恐諮報を得られます。

Latin 1 や ISO-2022-JP に見られる本文の拡張は、あくまで地域に限定された 紳士協定です。RFC822 を使う3源限り、地域間を越えてメッセ・6飴ジをやりとりする には、結局英語を使う3源しかないのです。

RFC822 は記述が曖昧なので、ヘッダや本文に 7 ビット文字である ISO-2022-JP を入れてもよいよう3源に読めます。たぶん、この説明を読めば誤解が解けるでしょ う3源。「RFC822 は、ヘッダと本文のシンタックス(構文)を7ビット、それらのセマ ンティックス(意味)を US-ASCII と定めています。ISO-2022-JP のシンタックス は RFC822 に拾6音っていますが、セマンティックスは RFC822 に違反しています。」


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.2 MIME の登Γ恐詞

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

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

日本語のテキスト

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

「ISO-2022-JP のΓ恐糸位互換規格であり、さまざまな文字コ・6飴ドを格忍6飴できる ISO-2022-JP-2 などを使えば charset など要らない。なう6飴なら ISO-2022-JP-2 Γ彊捌体に文字コ・6飴ドのΓ恐諮報が含まれているから」という3源人がいます。しかし、これ らの人は MIME を理解できているとは思えません。

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

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

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

MIME は地域化された RFC 822 を禁止する規格ではありません。よって、MIME のインタ・6飴フェイスは、以王6飴のよう3源な動作が胞6音まれています。

読むとき

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

書くとき

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

スプ・6飴ルやフォルダに ISO-2022-JP を EUC-Japan に変更して格忍6飴するΓ恐詞合は、 無Γ恐賜件に変換してはいけません。きちんと charset を確かめ、ISO-2022-JP だ けを EUC-Japan に変換するよう3源にして王6飴さい。

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


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.3 正規化の概念

残念ながら、世の中のコンピュータは、デ・6飴タをさまざまな方法で表現します。 以王6飴によく利用されている OS とその行末をΓ彊雑します。

よって、行末に関して取り決めがないと、これらの OS 間では安全にテキストが 交換できません。RFC822 では、メッセ・6飴ジの再送の際に行末を CRLF に変換す ることになっています。このよう3源に、共3源通の書Γ彊三への変換を「正規化」といいま す。SJIS や EUC-Japan を ISO-2022-JP に彫6音すのも正規化の一Γ彊誌です。

さて、PGP の暗号化や署名ついて考えてみましょう。たとえば、Mac のユ・6飴ザが 行末が CR である文Γ恐始に署巳6音し UNIX ユ・6飴ザに送ったとします。UNIX ユ・6飴ザが 行末を LF に変換し署巳6音を確認したとしたら、検Γ恐孜がΓ彊産敗するのは明らかでしょ う3源。そこで、PGP への入力はあらかじめ正規化されている必要があるのがお分か りになると思います。

PGP で暗号化したり署巳6音したりするΓ恐詞合は、まずテキストを ISO-2022-JP に変 換し、行末を CRLF に彫6音して王6飴さい。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated on March, 16 2003 using texi2html