2010-01-23 65 views
1

我不是很熟悉与二进制数据使用红宝石。我正在使用机械化将大量csv文件下载到本地磁盘。然后我需要搜索这些文件的特定字符串。红宝石机械化:如何读取下载的二进制CSV文件

我在机械化中使用save_as方法来保存文件(将文件保存为二进制文件)。该文件的内容类型(根据机械化)是:

application/vnd.ms-excel;charset=x-UTF-16LE-BOM 

从这里,我不知道如何阅读该文件。我试着用红宝石作为普通文件阅读它,但我只是得到二进制数据。我也尝试过使用标准的unix工具(字符串/ grep)来尝试搜索而没有任何运气。

当我在文件中的一个运行的“文件”命令,我得到:

foo.csv: Little-endian UTF-16 Unicode Pascal program text, with very long lines, with CRLF, CR, LF line terminators 

我可以看到数据只是猫或vi罚款。用vi我也看到一些控制字符。

我也试过csv和fastercsv ruby​​库,但是我得到这些的'IllegalFormatError'异常。我也试过this solution没有任何运气。

任何帮助将不胜感激。谢谢。

回答

1

您可以使用命令“的iconv”来CONVER为UTF-8,

# iconv -f 'UTF-16LE' -t 'UTF-8' bad_file.csv > good_file.csv 

也有标准库的iconv的包装,你可以用它来转换文件读入后你的程序。