Использование Ruby's quickcsv с кодировкой символов - PullRequest
3 голосов
/ 01 марта 2011

Используя Ruby 1.8.7, я хочу принять csv в мою систему, хотя это приложение администратора, кажется, я могу получить несколько разных типов csv.На моем Mac, если я экспортирую из Excel, используя опцию «windows csv», то по умолчанию ,csvs может прочитать ее.В Windows я, кажется, получаю csvs в кодировке utf-16 (что я пока не выяснил, как анализировать), ascii и т. д. форматирует, обнаруживает и анализирует ихКто-нибудь понял это?

Я начал смотреть на UniversalDetector, чтобы помочь мне разобраться, затем использовал Iconv для конвертации, но это кажется хитрым и надеялся, что кто-то понял это:)

1 Ответ

0 голосов
/ 02 марта 2011

Согласно документам FasterCSV , метод initialize принимает параметр :encoding:

Кодировка, используемая при синтаксическом анализе файла.По умолчанию установлено значение $ KDOCE.Допустимые значения: n??? or N ???ни за что, e??? or E ???для EUC s??? or S ???для SJIS и u??? or U ???для UTF-8 (см. Regexp.new ()).

Поскольку его список ограничен, вы можете рассмотреть возможность использования iconv для предварительной обработкисодержимого, а затем передать их в CSV.Вы можете использовать интерфейс Ruby для iconv ("Iconv") или его версию из командной строки.Iconv очень мощный и гибкий и способен конвертировать UTF-16 среди прочего.

На самом деле определение кодировки документа более проблематично, но версия командной строки может помочь вам в этом.Если я правильно помню, это может помочь определить кодировку.Он также может конвертировать между кодировками, или, если хотите, можно сказать, чтобы он конвертировался в ASCII, конвертировался в самые близкие совпадающие символы или полностью игнорировался..7 когда дело доходит до работы с различными наборами символов, так что вы можете рассмотреть возможность обновления.Кроме того, чтобы лучше ознакомиться с инструментами и проблемами работы с наборами символов и многобайтовыми символами, вам следует прочитать блоги Джеймса Грея .

...