【问题标题】:ruby mechanize: how read downloaded binary csv fileruby mechanize:如何读取下载的二进制 csv 文件
【发布时间】:2010-01-23 01:21:28
【问题描述】:

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

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

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

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

当我对其中一个文件运行“文件”命令时,我得到:

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 没有任何运气。

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

【问题讨论】:

    标签: ruby binary mechanize


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      相关资源
      最近更新 更多