Rubyでcsvファイルを読み込ませてsplitかけていたら、カラムがずれてしまうレコードがあるのを発見。
Shift-JISファイル読み込み => RubyのNKFモジュールでEUC変換 => split
だとおかしくなるんだけど、
Shift-JISファイル読み込み => split => RubyのNKFモジュールでEUC変換
だと問題がない。
_ コマンドラインからnkfでEUCに変換したファイルはOOoのcalcとかでも正常に読み込めているし問題がなさそうだけど、なぜだ?とkazu氏の助けを借りていろいろ原因を探ったが分からず。おかしくなるレコードをひとつひとつ追っかけて行くとおかしくなる箇所を発見。Emacsでごそごそ見ていたら...半角カナ キターーー!!これが原因だったのか...。
_ どうも、原因はRubyのNKFモジュールはVer1.7系のものだそうで、コマンドのnkfはVer1.9系と異なっていたので半角カナの扱いが違っていたんじゃないかという話。
nkfのオプションに-SXを追加して-e -m0 -SXに変更して解決。 -S MS漢字を仮定する。X0201仮名も仮定される。 -X MS漢字中にX0201仮名があると仮定する。