CP932

半角カナでハマった。昨夜煮詰まって、ドロドロの頭で眠ったのが、今朝は比較的早い時間に解決したんで、一安心。

一難(パフォーマンスの悪さ)が去って、また一難(CSV::MalformedCSVError)、っていうよりも、こちらが本来片付けたかったトラブルの本丸。

結論:旧PC-9801時代から生き残っている半角カナの残骸:Shift_JISのencodingで対応しているものとばかり「錯覚」していたが、Code page 932はShift_JISの亜種であり、日本語版Windows拡張であり、Shift_JISのコードページには半角カナが含まれていないらしい。

Constant Encoding::CP932

MacJapanese, CP932, Shift_JIS の違いと Ruby での取り扱い

dest_str = src_str.encode(Encoding::UTF_8, Encoding::CP932)

で変換できる。たぶん、これで今回のトラブルは一通り解決した。若い人たち、PC-9801全盛期の文字コードなんて、知らないだろうなぁ。

ついでに書けば、既に絶滅したKI(Kanji-In), KO(Kanji-Out)付きのJIS漢字コードなんていうのもあった。なんていう昔話を始めると、延々と止まらなくなるのが「嫌われるジジイ」の典型で・・・。いいんです、WEBだから、嫌なら読まなきゃいいだけ。KI(嫌いIn)/ KO(嫌いOut)で括っておいて、そこだけ別処理すりゃ、大抵のことはうまくいく。

メモの文書を残す。予定表を更新する。1時間後の僕は、全然違う仕事のツールを開いている。そう決めた。という訳で、コーヒーを淹れよう!まだ10時ダァ!