Wanderlustと文字コード
Wanderlustをもう5年以上使っているが、丸数字を含むメールで苦労していた。ローカルのファイルの読み書きは問題ないが、Wanderlust上では送信・受信でうまくいかない。
昔は Content-Type に charset=ISO-2022-JP って書いてありながら、iso-2022-jpの文字集合にない文字を使うようなメールは容赦なく切り捨てていた。添付ファイルの扱いも変だし、そんなうんこメー(ry
時は流れて、今や方眼紙Excelとメールに明け暮れるスーツな毎日。今時メールで丸数字や人名にハシゴ高が使えないメールソフトを使い続けるのは単に痛い人でしかない。というより、FromやToの欄にiso-2022-jp以外の文字集合の人(例えば(株)とか)がいるだけでアウトなので自分が辛い。
もう世間はGmailでUTF-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))
続いて送信側。丸数字メールは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-JPやEUC-JPに変換するには、変換方法とUTF-8との互換性、外字の扱いでいくつかの種類がある模様。
- ISO-2022-JP系
- x-iso2022jp-cp932
- CP50220 : JIS X 0201 片仮名を JIS X 0208 の片仮名に置換(Outlook Express, Internet Explorer での ISO-2022-JP、外字が規格外)
- CP50221 : JIS X 0201 片仮名を ESC ( I でエンコード
- CP50222 : JIS X 0201 片仮名を SO/SI でエンコード
- ISO-2022-JP-MS : CP50220の外字を正したもの
- EUC-JP
詳しくは以下を参照。
- Microsoftコードページ932 - Wikipedia
- cp932,cp51932,cp5022x の簡易テスト コードページ932/ウェブリブログ
- ISO-2022-JP-MS について (LE-talk-ja 3) - Legacy Encoding Project - SourceForge.JP
- eucJP-ms と CP51932 の違い コードページ932/ウェブリブログ
- →どのコードがどの文字集合を持っていて、変換によってどうなるかという図は分かりやすい。(他の内容と違う?)
標準仕様や規格があれば、かならず違反した実装が出てきて、一旦リリースされてしまったらそう簡単には直せない。周辺の開発者はしなくてもいいはずだった苦労に明け暮れる。でも、完全な世界はきっと無くて、そんなごたごたも含めて技術は進歩していくのだと、スーツ族になって思うようになった。
でも、やっぱりいろんな意味でマイクロソフトの責任は重いと思う。