Ruby

CSV を文字コード変換しつつロード

More than 5 years have passed since last update.

CSV.foreach(filename, encoding: "Shift_JIS:UTF-8") do |row|

# …
end

だが、未定義文字があるとエラーに。

Kernel#open だと

open(filename, "rb:Shift_JIS:UTF-8", undef: :replace) do |f|

# …
end

のように、String#encode と同じオプションが渡せるが、CSV ではここにオプションを渡すすべはない。

よって Kernel#open と併用する。

open(filename, "rb:Shift_JIS:UTF-8", undef: :replace) do |f|

CSV.new(f).each do |row|
# ...
end
end