读取CSV文件 - UTF-8中的字节序列无效

时间:2011-08-30 08:50:27

标签: ruby-on-rails-3 csv

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

有没有办法自动解决此问题并识别并删除问题字符?

2 个答案:

答案 0 :(得分:5)

我找到了一个从字符串中丢弃所有无效utf8字节的解决方案:

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

(摘自this blog post

希望这有帮助。

答案 1 :(得分: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

然而它并没有开始工作。