Ruby
Rails

BOM付きUTF-8のCSVを作成する(Excel文字化け対策)

More than 1 year has passed since last update.

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

以上!

参考