From: ichirojiro Date: 2009-11-15T16:44:21+09:00 Subject: [ruby-list:46548] Re: CSV.openがうまく動きません --------------060704030502020905030201 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 藤岡さん ご返答ありがとうございます。 再現するコードです。 require 'csv' CSV.open("C:\\test.csv", 'r') do |row| p row end test.csvを添付しました。 よろしくお願いします。 > 藤岡です。 > > 短く再現するコードと、 > test.csvファイルを添付してくださると > 検証しやすいのではないでしょうか。 > もちろん小さいファイルでお願いしたいですが。 > > ichirojiro さんは書きました: >> ichiroと申します。 >> ruby1.8.7で動いているプログラムをruby1.9.1で動くようにする作業中にわから >> ないことがありました。よろしければお教えください。 >> >> 単純化したプログラム >> # encoding: ASCII-8BIT >> p RUBY_VERSION >> p RUBY_PLATFORM >> p __ENCODING__ >> require 'csv' >> p "-----" >> CSV.foreach("C:\\test.csv") do |row| >> p row >> end >> p "-----" >> CSV.open("C:\\test.csv", 'r') do |row| >> p row >> end >> p "-----" >> >> 実行結果(windows XP RDEで実行しています) >> "1.9.1" >> "i386-mswin32" >> # >> "-----" >> ["111", "222", "\x8ER"] >> ["333", "444", "\x90\xEC"] >> "-----" >> <#CSV io_type:File io_path:"C:\\test.csv" encoding:Windows-31J lineno:0 >> col_sep:"," row_sep:"\r\n" quote_char:"\""> >> "-----" >> Complete(0) >> >> 1.8.7で動いていたプログラムを1.9.1で動かすとCSV.openのところで処理が進ま >> なくなりました。試しに50行ぐらいあるcsvデータを10行程度に減らすと処理は >> 進むようにはなったのですが上記のようなrowデータが1件のみ得られるようにな >> りました。いろいろ試してみてCSV.foreachなら上記のようにうまく動いたので >> CSV.openをすべてCSV.foreachの変えることで一応解決しています。 >> よろしくお願いします。 >> > > > --------------060704030502020905030201 Content-Type: text/plain; name="test.csv" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="test.csv" MTExLDIyMiwijlIiDQozMzMsNDQ0LCKQ7CINCg== --------------060704030502020905030201--