Hatena::ブログ(Diary)

技術日記@kiwanami

2009-11-03

Wanderlustと文字コード

Wanderlustをもう5年以上使っているが、丸数字を含むメールで苦労していた。ローカルのファイルの読み書きは問題ないが、Wanderlust上では送信・受信でうまくいかない。

昔は Content-Type に charset=ISO-2022-JP って書いてありながら、iso-2022-jp文字集合にない文字を使うようなメールは容赦なく切り捨てていた。添付ファイルの扱いも変だし、そんなうんこメー(ry

時は流れて、今や方眼紙Excelとメールに明け暮れるスーツな毎日。今時メールで丸数字や人名にハシゴ高が使えないメールソフトを使い続けるのは単に痛い人でしかない。というより、FromやToの欄にiso-2022-jp以外の文字集合の人(例えば(株)とか)がいるだけでアウトなので自分が辛い。

もう世間はGmailUTF-8で本文を送っても問題が無くなり、しかも cp50220 というもっともらしいコードがいつの間にか出来ていたので、なんとか対応した。

方針は、

  • iso-2022-jpで受信したら cp50220 で扱う
  • 送信時はutf-8にしてquoted-printableで送る

結局以下のようにして解決。

まず、受信側の設定。cp5022x.elをインストールして、set-landuage-environment の後ろに以下を追加。

 (require 'cp5022x)

さらに.wlで以下の行を追加。

(add-to-list 'mime-charset-coding-system-alist '(iso-2022-jp . cp50220))

参考:Emacs23 日本語向け設定例

続いて送信側。丸数字メールはwlが自動的に判断してUTF-8をquoted-printableで送ろうとするのだけども、quoted-printableが省略されてUTF-8のまま送ってしまう。(現時点の最新版:flim-1.14.9のバグ?)

参考:http://article.gmane.org/gmane.mail.wanderlust.general.japanese/5978

パッチの通りに mel-q-ccl.el のソースを修正、バイトコンパイルしてEmacs再起動。無事送れた。

CP932な文字コードについて

CP932をISO-2022-JPEUC-JPに変換するには、変換方法とUTF-8との互換性、外字の扱いでいくつかの種類がある模様。

詳しくは以下を参照。

標準仕様や規格があれば、かならず違反した実装が出てきて、一旦リリースされてしまったらそう簡単には直せない。周辺の開発者はしなくてもいいはずだった苦労に明け暮れる。でも、完全な世界はきっと無くて、そんなごたごたも含めて技術は進歩していくのだと、スーツ族になって思うようになった。

でも、やっぱりいろんな意味でマイクロソフトの責任は重いと思う。