hrt10の日記

色々な設定のメモやら何やら

BOM付きファイルとCSVクラス

BOM付きファイルを ruby CSV でヘッダをキーにして読もうとすると最初のカラムがアクセスできない。
open の際に "BOM | UTF-8" を指定すること。

HEADER_SYM_MAP = {
   "姓" => :familyName,
   "名" => :firstName,
   "ID" => :idnumber
}
header_converter = lambda { | h | HEADER_SYM_MAP[h] }
csv = CSV.read(ARGV[0], 'r:BOM|UTF-8', headers: true, header_converters: header_converter)


こんな感じ。
foreach を使うなら、

CSV.foreach ARGV[0], {encoding: 'BOM|UTF-8', headers: true, header_converters: header_converter } do | data |
...
end

以下を参考にさせてもらった。

https://qiita.com/buchiosan/items/a95acf45fbf8379eee6d