Next: , Previous: , Up: International   [Contents][Index]


22.8 出力のためのコーディングシステムの選択

Emacsがバッファーにたいして1度コーディングシステムを選択すると、そのコーディングシステムは、buffer-file-coding-systemに記録されます。これによりsave-bufferwrite-regionなどの、バッファーからファイルに書き込む際のデフォルトに、それを使用するようになります。set-buffer-file-coding-systemを使って、バッファーのコーディングシステムとは異なるコーディングシステムで、ファイルに書き込むよう指定できます(Text Codingを参照してください)。

Emacsがサポートする任意の文字を、任意のEmacsバッファーに挿入できますが、ほとんどのコーディングシステムは、それらの文字のサブセットしか処理することができません。したがって挿入した文字は、そのバッファーを保存するのに使われるコーディングシステムではエンコードできないかもしれません。たとえば、iso-8859-2でエンコードされたPolishのファイルをvisitして、それにRussianの単語を追加することは可能です。このバッファーを保存するとき、Emacsはbuffer-file-coding-systemの現在の値を使用できません。なぜなら追加された文字が、そのコーディングシステムではエンコードできないからです。

これが発生した場合、Emacsは(M-x prefer-coding-systemまたはM-x set-language-environmentによりセットされた)もっとも適したコーディングシステムを試します。そのコーディングシステムがバッファーのすべての文字をエンコードできたら、Emacsはそれを使って、その値をbuffer-file-coding-systemに格納します。そうでなければEmacsはバッファー内容をエンコードするのに適したコーディングシステムのリストを表示して、それらのコーディングシステムを1つ選ぶよう求めます。

メールメッセージに適さない文字を入力した場合、Emacsの振る舞いは若干異なります。この場合、追加でMIMEメッセージに推奨されたもっとも適したコーディングシステムかをチェックします。もしそうでなければ、この事実を知らせ、他のコーディングシステムの入力を求めます。これにより、メール受信者のメールソフトがデコードするのが困難なエンコードで、無意識にメッセージを送るようなことがなくなります(入力をもとめられたときに、適さないコーディングシステムを選ぶ、という選択肢もまだ残っています)。

メールメッセージを送信するとき、Emacsはメッセージテキストのエンコーディングに使うコーディングシステムを決定する、4つの異なる方法をもっています。最初にバッファー自身のbuffer-file-coding-systemが非nilなら、それを使います。次にsendmail-coding-systemが非nilなら、それを使います。3番目は言語環境の選択により制御されるデフォルトのコーディングシステムが非nilなら、それを使います。上述した値のすべてがnilの場合、送信メールをLatin-1コーディングシステムを使ってエンコードします。