電子メールはISO-2022-JPで符号化するというのが、インターネットで日本語をやり取りするようになってから長く続いてきた習慣でした。しかしISO-2022-JPでは使える文字が限られていて、問題があります。現代日本の文字にちゃんと対応するには、JIS X 0213の文字に対応する必要があるのです。
で、細かい背景や議論は拙著『プログラマのための文字コード技術入門』の第6章を参照していただきたいのですが、結論からいうと、ASCII + JIS X 0208の組み合わせで済む場合はISO-2022-JPで、それを超える範囲の文字(JIS第3・第4水準とか)を含む場合にはUTF-8を使う、というのが、最も受け入れられやすそうに考えられます。異論もあるかもしれませんが、ここではそういうことにしておきます。
この方針は、Emacs上のメーラのMewで実現できます。Emacsでは既にJIS X 0213の文字コードを扱う方法が確立されていますし、文字入力にSKKやAnthyを使うことで、JIS X 0213の全文字を自由自在に入力できます。そしてMewはそうした文字の送受信にも対応しています。
Mewで上記の方針の通りの動作をするには、以下のように、Emacs Lispファイルを書き換える必要があります。デフォルトでは後述するとおりちょっと違った動作になってしまうので、動作の定義を変更してやるのです。
Mewを構成するEmacs Lispファイル mew-mule3.el の中に、下記のような記述があります。
((ascii japanese-jisx0208 japanese-jisx0213-1 japanese-jisx0213-2)
iso-2022-jp-3 "7bit" "B")
この2行目を、下記の内容に置き換えます。
utf-8 ,mew-charset-utf-8-encoding ,mew-charset-utf-8-header-encoding)
以上です。
この変更によって、JIS X 0213の文字が含まれる場合はUTF-8で符号化されます。①のような丸付き数字や♡のような記号、あるいは「氐」「𩸽」のような第3・第4水準漢字が含まれていたら、UTF-8で符号化のうえ送信されるということです。一方、ASCIIとJIS X 0208の文字しか使っていない場合には、従来どおりにISO-2022-JPが使われます。
mew-mule3.elに上記の変更を施さない場合には、JIS X 0213の文字があるとMewはISO-2022-JP-3で符号化して送信します。これはこれで正統なやり方ではあるのですが、残念ながらこの符号化方式を解釈できるメーラはごく限られます。現時点では、UTF-8にした方が読んでもらえる可能性は高まります。
UTF-8は8ビットのコードなのでContent-Transfer-Encodingが問題になりますが、私が試したところではbase64になりました。これは上記のmew-charset-utf-8-encodingという変数で決まるようです。
ちなみに、私はMew 5.2で試していますが、上記変更箇所は最新版6.3でも変わっていないようなので、同じ手順でうまくいくと思います。
コメントする