ホーム DoRuby 【Ruby/Rails】Shift_JISなのかUTF-8なのかわからないCSVを開く【CSV】
 

【Ruby/Rails】Shift_JISなのかUTF-8なのかわからないCSVを開く【CSV】

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

よくCSVを読み込む時にファイルのエンコードが違っていて読み込めず例外が発生することが多々あります。そこで例外発生を抑える方法を記述します。

begin~rescueを使用してCSVを開く

例外が起こるたびに次の方法で開いていくスタイル。

def execute
  csv.each do |row|
    .
    .
    .
  end
end

private

def csv
  begin
    @csv = CSV.foreach(file_path)
    @csv.first # UTF-8で開けなかったらここで例外が起こる
    @csv
  rescue
    CSV.new(open(file_path, 'rb:Shift_JIS:UTF-8', undef: :replace)) # Shift_JISのCSVを開く
  end
rescue
  errors.add :base, '開けぬ...'
  raise
end

def file_path
...
end
記事を共有
モバイルバージョンを終了