railsでcsvダウンロード機能を作ったら、excelで開いたら文字化けするって言われた時の対応です。
バージョンは以下で試しました。
ruby 2.1.2
rails 4.1.5
まず最初に書いたcsvダウンロード部分を抜粋。
ローカルにファイルを出力して、それをsend_fileで返す形です。
filename = '/tmp/test.csv' line = ['aa','bb','cc'] open(filename,"w"){|f| f.puts(line.join(',')) } stat = File.stat(filename) send_file(filename, :filename => 'test.csv', :length => stat.size)この形だとファイルの文字コードがUTF-8になります。
UTF-8だとexcelで開いた時には文字化けしました。
(Libre Officeだと最初にencodeをどれにするか聞かれたので、UTF-8にすれば問題なく開けました。)
最初の処理から文字コードを変えた形。
filename = '/tmp/test.csv' line = ['aa','bb','cc'] open(filename,"w:cp932"){|f| f.puts(line.join(',')) } stat = File.stat(filename) send_file(filename, :filename => 'test.csv', :length => stat.size)ローカルにファイルを出力するタイミングで
文字コードの指定を「cp932」にしてあげると、
文字化けせずにexcelで開けるようになりました。
macのexcelでもUTF-8だと文字化けしたのが、excelがっかりだなぁと思ったりした次第です。
参考URL
http://tmtms.hatenablog.com/entry/20120812/ruby_encoding
0 件のコメント:
コメントを投稿