[#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:46550] Re: CSV.openがうまく動きません
From:
ichirojiro <ichirojiro@...>
Date:
2009-11-15 10:04:00 UTC
List:
ruby-list #46550
ichiroです。
早速ありがとうございます。
ruby -v は
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]
です。
CSV.open("C:\\test.csv", "rb"){|row|p row}
<#CSV io_type:File io_path:"C:\\test.csv" encoding:ASCII-8BIT lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
CSV.open("C:\\test.csv", "r:sjis"){|row|p row}
<#CSV io_type:File io_path:"C:\\test.csv" encoding:Shift_JIS lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
試しにUTF-8でtest2.csvを作成して実行してみました。
CSV.open("C:\\test2.csv", "r"){|row|p row}
<#CSV io_type:File io_path:"C:\\test2.csv" encoding:Windows-31J lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
CSV.open("C:\\test2.csv", "r:utf-8"){|row|p row}
<#CSV io_type:File io_path:"C:\\test2.csv" encoding:UTF-8 lineno:0
col_sep:"," row_sep:"\r\n" quote_char:"\"">
なかなかうまくいきません。
> 藤岡です。
>
> 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の変えることで一応解決しています。
>>>> よろしくお願いします。
>>>>
>>>
>
>
>