RubyでExcelから出力したShift_JISのcsvをutf-8に変換する
RubyでExcelから出力した、文字コードがShift_JISのcsvをutf-8に変換する方法のメモです。
私が作成しているRailsのアプリで、
seeds.rbでExcelファイルから出力したcsvファイルを読み込んで、
DBの初期データ投入をしています。
Excelから出力したcsvファイルはMac版Excelを使用していても、Shift_JISになっています。
最近のExcelではUTF-8で出力出来るらしいのですが、私が持っているExcelが古いのか出来ないみたいです。
Shift_JISのcsvを直接読み込むために、次の方法をとっています。
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