在尝试从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: '')
的情况下跳过无效字符?
我尝试了以下问题的答案,但没有成功:
- ruby 1.9:UTF-8中的无效字节序列
- UTF-8中的Ruby无效字节序列
- ruby 1.9:UTF-8中的无效字节序列
这来自CSV.open
文档:
除非数据位于Encoding::default_external()中,否则必须为模式提供嵌入的Encoding指示符。CSV将检查底层IO对象的编码(由您传递的模式设置),以确定如何解析数据。您可以提供第二个Encoding,以便在读取数据时对其进行代码转换,就像对IO::open()的正常调用一样。例如,"rb:UTF-32BE:UTF-8"将从文件中读取UTF-32BE数据,但在CSV解析之前将其转码为UTF-8。
这适用于CSV中打开文件的任何方法。
同时开始阅读以开头的部分的文档
CSV和字符编码(M17n或多种语言)
Ruby期望使用UTF-8,但却看到不合适的字符。我会怀疑WIN-1252或ISO-8859-1或一种变体。