Excel 用の CSV を Rails で吐く必要があったのですが、BOM 無し UTF-8 だと文字化けしてしまうため、BOM を付けてやる必要がありました。
CSV 作成に使用したメソッド
CSV を作る方法は色々あると思いますが、今回はCSV.generate
を利用して CSV ファイルを作成しています。
Rails で CSV を出力する方法について調べたら、見覚えのあるピンクアイコンの記事が出てきたので、その方法をそのまま採用しました。
実装
CSV.generate
は文字列をラップして CSV のオブジェクトとしてブロックに渡すメソッドらしいので、BOM を引数に渡せば BOM 付きになります。
foo.csv.ruby
require "csv"
bom = %w(EF BB BF).map { |e| e.hex.chr }.join
CSV.generate(bom) do |csv|
:
end
以上!