From: Masashi Fujiwara <mail / masashi-fujiwara.net>
Subject: [ruby-list:46370] ruby 1.9 でのCSVファイルの書き出しについて
Date: Tue, 8 Sep 2009 13:17:02 +0900

るびきちです。

# 誰からも返答がないのでとりあえず手がかりだけでも…

> ---test.csv-----
> a,b,dあ,い,う
> ----------------
> という改行が挿入されない形で出力されてしまいます。

こちら(Debian GNU/Linux)では意図通りの動作をします。

# -*- coding: cp932 -*-
require 'csv'
# 確かに標準ライブラリのcsv.rbが読み込まれている
$".grep(/csv/)                  # => ["/usr/local/lib/ruby/1.9.1/csv.rb"]

CSV.open('test.csv', "w") do |writer|
  writer << ["a", "b", "d"]
  writer << ["あ", "い", "う"]
end
puts File.read('test.csv')
# >> a,b,d
# >> あ,い,う

そちらの環境で標準ライブラリ版のcsv.rbが読み込まれていますか?

> # coding: Shift_JIS

Windows上のShift_JISならば、cp932 や windows-31j を指定するのが無難です。

> ruby 1.8.7では意図通り動くので、1.9では使用方法などが変わったのでしょうか。

csv.rbなRuby 1.9で別実装に切り替わっています。
なるべく互換性を保つように設計されていますが、一部で非互換が発生します。。

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/
Twit: http://twitter.com/rubikitch/
『Ruby逆引きハンドブック』 http://d.hatena.ne.jp/rubikitch/20090525/rubybook