У меня есть csv-файл в кодировке ISO-8859-1, который я пытаюсь открыть и проанализировать с помощью ruby:
require 'csv'
filename = File.expand_path('~/myfile.csv')
file = File.open(filename, "r:ISO-8859-1")
CSV.parse(file.read, col_sep: "\t") do |row|
puts row
end
Если я пропускаю кодировку из вызова File.open, я получаю ошибку
ArgumentError: неверная последовательность байтов в UTF-8
Моя проблема в том, что при вызове puts row
вместо норвежских символов отображаются странные символы æ, ø, å:
BOKFRINGSDATO
Я получаю то же самое, если открываю файл в textmate, заставляя его использовать кодировку UTF-8.
Назначая содержимое файла строке, я могу проверить кодировку, используемую для строки. Как и ожидалось, он показывает ISO-8859-1.
Итак, когда я puts
каждой строке, почему она выводит строку как UTF-8?
Это как-то связано с csv-библиотекой?
Я использую ruby 1.9.2.