ruby mechanize:如何读取下载的二进制csv文件

时间:2010-01-23 01:21:29

标签: ruby binary mechanize

我不太熟悉使用ruby和二进制数据。我正在使用mechanize将大量的csv文件下载到我的本地磁盘。然后我需要在这些文件中搜索特定的字符串。

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

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

从这里开始,我不确定如何阅读该文件。我已经尝试将其作为ruby中的普通文件读取,但我只是获取二进制数据。我也尝试过使用标准的unix工具(strings / grep)来尝试搜索而没有任何运气。

当我在其中一个文件上运行'file'命令时,我得到:

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

我可以用cat或vi看到数据。使用vi我也会看到一些控制字符。

我也尝试了csv和fastercsv ruby​​库,但我得到了'IllegalFormatError'异常。我也试过this solution而没有任何运气。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用命令'iconv'转换为UTF-8,

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

标准库中还有一个iconv包装器,您可以在将文件读入程序后使用它来转换文件。