Perl で
open (FH, "<:encoding(shiftjis)", "hoge.txt");
とかやって、ShiftJIS で入力 → UTF-8 で処理 → 再度 ShiftJIS で出力、なんて処理を今までよく書いてたわけですが。
どうもこの変換の過程で機種依存文字がおかしくなってしまうみたいです。
(出力結果を見ると \xff とか出力されたり?)
なんかこのあたり仕事で使うこともありそうなので、解決方法を調べてみました。
http://saba.three-a.co.jp/~toku/diary/?200307c&to=200307295#200307295
あたりにまとまってまして。
encode 周りを使う場合は "shiftjis" でなく "cp932" を指定してやればいいそうです。
んー・・・ShiftJIS と CP932 って別物だったんですね。
やっぱ体系的に学習してない分野の知識はかなり怪しいなぁ。
で、実際それでうまく処理できてるみたいです。
今後よほど特殊な条件(機種依存文字を出力するとまずい場合や、古い Encode モジュールしか使えない場合)以外は "cp932" 指定で行こうと思います。