2011-08-30 86 views
2

我一直使用rake文件数个月读取CSV文件中的数据。我最近尝试读入新的CSV文件,但不断收到错误“UTF-8中的无效字节序列”。我试图手动找出问题所在,但收效甚微。 csv文件只是文本和URL,最初有一些不寻常的字符(原始文本中有特别的bulletpoints),但我删除了这些字符,并且找不到任何其他异常。读取CSV文件 - UTF-8中的无效字节序列

有没有办法自动绕开这个问题,并识别和删除问题字符?

回答

5

我已经找到了解决方案,从一个字符串丢弃所有无效的UTF8字节:

ic = Iconv.new('UTF-8//IGNORE', 'UTF-8') 
valid_string = ic.iconv(untrusted_string + ' ')[0..-2] 

(从this blog post拍摄)

希望这有助于。

+0

非常感谢! – Texas

0

你把这些放在哪里。我有这样的事情:

CSV.foreach("/Users/CarlBourne/Customers/Lloyds/small-test2.csv", options) do |row | 

    name, workgroup, address, actual, output = row 
    next if nbname == "NBName" 
    @ssl_info[name] = workgroup, address, actual, output 

    ic = Iconv.new('UTF-8//IGNORE', 'UTF-8') 
    clean = ic.iconv(output + ' ')[0..-2] 

puts clean 

end 

然而,它并没有缝合的工作。

相关问题