У меня возникают проблемы с обработкой текстовых файлов табличных данных, сгенерированных на компьютере с Windows. Я работаю в Руби 1.8. Следующее выдает ошибку ("\000" (Iconv::InvalidCharacter)) при обработке ВТОРОЙ строки из файла. Первая строка преобразована правильно.
require 'iconv'
conv = Iconv.new("UTF-8//IGNORE","UTF-16")
infile = File.open(tabfile, "r")
while (line = infile.gets)
line = conv.iconv(line.strip) # FAILS HERE
puts line
# DO MORE STUFF HERE
end
Странно то, что он без проблем читает и преобразует первую строку в файле. У меня есть флаг //IGNORE в конструкторе Iconv - я думал, что это должно было подавить такого рода ошибки.
Я ходил по кругу какое-то время. Любые советы будут высоко оценены.
Спасибо!
РЕДАКТИРОВАТЬ: решение hobbs исправляет это. Спасибо. Просто измените код на:
require 'iconv'
conv = Iconv.new("UTF-8//IGNORE","UTF-16")
infile = File.open(tabfile, "r")
while (line = infile.gets("\x0a\x00"))
line = conv.iconv(line.strip) # NO LONGER FAILS HERE
# DOES MORE STUFF HERE
end
Теперь мне просто нужно найти способ автоматически определять, какой разделитель следует использовать.