Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

RubyでExcelから出力したShift_JISのcsvをutf-8に変換する

RubyExcelから出力した、文字コードShift_JIScsvutf-8に変換する方法のメモです。
私が作成しているRailsのアプリで、
seeds.rbでExcelファイルから出力したcsvファイルを読み込んで、
DBの初期データ投入をしています。

Excelから出力したcsvファイルはMacExcelを使用していても、Shift_JISになっています。
最近のExcelではUTF-8で出力出来るらしいのですが、私が持っているExcelが古いのか出来ないみたいです。

Shift_JIScsvを直接読み込むために、次の方法をとっています。

require 'csv'

(略)
csv_data = CSV.read('db/food.csv', headers: true,
    external_encoding: "Shift_JIS",
    internal_encoding: "utf-8"
  )
csv_data.each do |data|
  Food.create!(data.to_hash)
end

参考
string - Ruby read CSV file as UTF-8 and/or convert ASCII-8Bit encoding to UTF-8 - Stack Overflow