У меня есть файлы CSV, сохраненные из Excel, это CP-1252 / Windows-1252.Я попробовал следующее, но все равно получилось поврежденным.Почему?
csv_text = File.read(arg[:file], encoding: 'cp1252').encode('utf-8')
# csv_text = File.read(arg[:file], encoding: 'cp1252')
csv = CSV.parse csv_text, :headers => true
csv.each do |row|
# create model
p model
Результат
>rake import:csv["../file.csv"] | grep Brien
... name: "Oâ?TBrien ...
Однако он работает в консоли
> "O\x92Brien".force_encoding("cp1252").encode("utf-8")
=> "O'Brien"
Я могу открыть файл CSV в Notepad ++, Encoding > Character Sets > Western European > Windows-1252
,посмотрите правильные символы, затем Encoding > Convert to UTF-8
.Однако есть много файлов, и я хочу, чтобы Ruby справился с этим.
Схожий: Как изменить кодировку при разборе CSV в Rails .Но это не объясняет, почему это не удается.
Ruby 2.4, Ссылка: https://ruby -doc.org / core-2.4.3 / IO.html # method-c-read