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
以下を参考にさせてもらった。