尝试从CSV文件中打印Duplicaci¾n
时,出现以下错误:
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: '')
?
我尝试了以下问题的答案,但没有任何效果:
答案 0 :(得分:0)
除非您的数据位于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或变种。