Я уже несколько месяцев использую rake-файл для чтения данных из CSV-файла. Недавно я попытался прочитать новый CSV-файл, но продолжаю получать ошибку «недопустимая последовательность байтов в UTF-8». Я попытался вручную определить, в чем проблема, но без особого успеха. Файл csv - это просто текст и URL-адреса, изначально было несколько необычных символов (где в исходном тексте были причудливые маркеры), но я удалил их и не могу найти никаких дополнительных аномалий.

Есть ли способ обойти эту проблему автоматически и определить и удалить проблемных персонажей?

2
Texas 30 Авг 2011 в 12:50

2 ответа

Лучший ответ

Я нашел решение отбросить все недопустимые байты utf8 из строки:

ic = Iconv.new('UTF-8//IGNORE', 'UTF-8')
valid_string = ic.iconv(untrusted_string + ' ')[0..-2]

(взято из этого сообщения в блоге)

Надеюсь это поможет.

5
Benoit Garret 30 Авг 2011 в 09:56

Куда вы их кладете? У меня примерно так:

CSV.foreach("/Users/CarlBourne/Customers/Lloyds/small-test2.csv", options) do |row |

    name, workgroup, address, actual, output = row
    next if nbname == "NBName"
    @ssl_info[name] = workgroup, address, actual, output

    ic = Iconv.new('UTF-8//IGNORE', 'UTF-8')
    clean = ic.iconv(output + ' ')[0..-2]

puts clean

end

Однако это не работает.

0
user1513388 13 Сен 2012 в 15:56