2008年7月24日

[ruby-list:45256] Ruby 1.9 の CSV ライブラリで例外

5.5 と申します。

将来 Ruby 1.9 に移行することを念頭に,テキスト処理のスクリプトを
Ruby 1.9 で動かしてみているところです。

Ruby 1.9 の CSV ライブラリで日本語を含む CSV テキストを読もうと
すると例外が発生することがあります。
以下のスクリプトです。


# encoding: Shift_JIS
require 'csv'

csv=CSV.parse <<EOT
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ,あ
EOT

これで,以下のような例外が発生します。(ファイルパスは省略)

csv.rb:1658:in `init_separators': broken Shift_JIS string (ArgumentError)

csv.rb の該当箇所を見てみると,行セパレーターを推測しようとして
コケているみたいです。
CSV.parse の第二引数に :row_sep=>"\n" と明示的に与えてやると例外
が出なくなりました。

使ったのは
ruby 1.9.0 (2008-06-20 revision 17482) [i386-mswin32]
です。

--
5.5@xxxxx


投稿者 xml-rpc : 2008年7月24日 22:11
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/75653
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。