[#46502] Twitterのサンプルでエラーなんですが。 — "T.Soejima" <clev@...2.so-net.ne.jp>
そえじま@勉強中です。
9 messages
2009/11/02
[#46517] Ruby1.8.8devでのsinatra動作について — "前川 映一" <eiichi_maekawa@...>
7 messages
2009/11/05
[#46530] ARGVの引数のデータタイプ — askar <askar75@...>
アスカルです。
9 messages
2009/11/09
[#46532] Re: ARGVの引数のデータタイプ
— Yukihiro Matsumoto <matz@...>
2009/11/09
まつもと ゆきひろです
[#46535] Re: ARGVの引数のデータタイプ
— askar <askar75@...>
2009/11/11
まつもとさん、
[#46546] CSV.openがうまく動きません — ichirojiro <ichirojiro@...>
ichiroと申します。
8 messages
2009/11/14
[#46558] 【追記】 Ruby on Railsセミナーのエントリーについて — 川井健史(CO) <takeshi.kawai@...>
Rubyistの皆様
4 messages
2009/11/15
[#46571] ruby1.9 でpostgresql8.4を利用するときについて。 — Nobuyuki Inaba <nobuyuki.inaba@...>
稲葉と申します。
8 messages
2009/11/27
[#46575] Re: ruby1.9 でpostgresql8.4を利用するときについて。
— keiichi matsunaga <ma2@...>
2009/11/30
On 11/27/2009 7:12 PM, Nobuyuki Inaba wrote:
[#46572] [ANN]12/12 DevLOVE2009Fusion を開催します — <papanda0806@...>
ruby-listのみなさん
1 message
2009/11/27
[ruby-list:46549] Re: CSV.openがうまく動きません
From:
Fujioka <fuj@...>
Date:
2009-11-15 08:08:17 UTC
List:
ruby-list #46549
藤岡です。
ruby -vの結果もあったほうがいいかもしれません。
私は1.9.1の環境はないのですが、
% ruby19 -v
ruby 1.9.2dev (2009-11-06 trunk 25673) [x86_64-darwin10.0.0]
の環境だと、
irb(main):002:0> CSV.open("test.csv","r"){|row|p row}
ArgumentError: invalid byte sequence in UTF-8
from /Users/fujioka/local/lib/ruby/1.9.1/csv.rb:1988:in `=~'
from /Users/fujioka/local/lib/ruby/1.9.1/csv.rb:1988:in `init_separators'
from /Users/fujioka/local/lib/ruby/1.9.1/csv.rb:1564:in `initialize'
from /Users/fujioka/local/lib/ruby/1.9.1/csv.rb:1329:in `new'
from /Users/fujioka/local/lib/ruby/1.9.1/csv.rb:1329:in `open'
from (irb):2
from /Users/fujioka/local/bin/irb19:12:in `<main>'
irb(main):003:0> CSV.open("test.csv","rb"){|row|p row}
<#CSV io_type:File io_path:"test.csv" encoding:ASCII-8BIT lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
=> <#CSV io_type:File io_path:"test.csv" encoding:ASCII-8BIT lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
irb(main):004:0> CSV.open("test.csv","r:sjis"){|row|p row}
<#CSV io_type:File io_path:"test.csv" encoding:Shift_JIS lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
=> <#CSV io_type:File io_path:"test.csv" encoding:Shift_JIS lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
こんな感じでした。
ファイルの中身がUTF-8じゃないとrだけではだめなようです。
CSV.open("test.csv","rb")とか"r:sjis"
にしてみるとどうなります?
ichirojiro さんは書きました:
> 藤岡さん
> ご返答ありがとうございます。
> 再現するコードです。
> 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"
>>> #<Encoding:ASCII-8BIT>
>>> "-----"
>>> ["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の変えることで一応解決しています。
>>> よろしくお願いします。
>>>
>>
>>
>