1

尝试打印Duplicaci¾nCSV 文件时,出现以下错误:

ArgumentError - invalid byte sequence in UTF-8

我正在使用 Ruby 1.9.3-p362 并使用以下命令打开文件:

CSV.foreach(fpath, headers: true) do |row|

如何在不使用 iconv 或的情况下跳过无效字符str.encode(undef: :replace, invalid: :replace, replace: '')

我尝试了以下问题的答案,但没有任何效果:

4

1 回答 1

0

这是来自CSV.open文档

除非您的数据在 Encoding::default_external() 中,否则您必须提供带有嵌入式编码指示符的模式。CSV 将检查底层 IO 对象的编码(由您传递的模式设置)以确定如何解析数据。您可以提供第二个编码,以便在读取数据时对其进行转码,就像您可以通过对 IO::open() 的正常调用一样。例如,“rb:UTF-32BE:UTF-8”将从文件中读取 UTF-32BE 数据,但在 CSV 解析之前将其转码为 UTF-8。

这适用于 CSV 中打开文件的任何方法。

还可以从以下部分开始阅读文档:

CSV 和字符编码(M17n 或多语言)

Ruby 期待 UTF-8,但看到不适合的字符。我怀疑是 WIN-1252 或 ISO-8859-1 或变体。

于 2013-08-23T14:44:48.123 回答