| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ここでは、非 ASCII 文字をメッセ・6飴ジで使う3源ために人々が奮闘してきた歴史を漢字 を例にΓ彊肢って振り返ります。
13.1 電子メ・6飴ルと地域化 13.2 MIME の登Γ恐詞 13.3 正規化の概念
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
絵や音畝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音まれています。
読むとき
書くとき
スプ・6飴ルやフォルダに ISO-2022-JP を EUC-Japan に変更して格忍6飴するΓ恐詞合は、 無Γ恐賜件に変換してはいけません。きちんと charset を確かめ、ISO-2022-JP だ けを EUC-Japan に変換するよう3源にして王6飴さい。
ヘッダに非 ASCII 文字を挿入する機能は MIME の一機能ですが、Γ彊斬際には、 MIME-Version: フィ・6飴ルドは必要ありません。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
残念ながら、世の中のコンピュータは、デ・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] | [ ? ] |