阅读CSV撇号

时间:2016-02-25 06:27:16

标签: ruby csv apostrophe

我正在尝试读取CSV并且Ruby遇到CSV中的箭头后停止阅读。箭头应该是撇号。我不能用CSV替换它,因为当我复制和粘贴时,我会粘贴一个空格。

我尝试使用CSV.foreach或File.open,然后阅读each_line。两种方法都有同样的问题。

在文本编辑器中,角色为黑色SUB。

我该如何解决这个问题?

CSV.foreach(filename) do |row|
 puts row
end

File.open(filename, "r") do |f|
 f.each_line do |row|       
     puts row
 end
end

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您的文件没有按照Ruby默认的方式进行编码,则需要在调用foreach时手动指定编码,如下所示:

CSV.foreach(filename, encoding: Encoding::UTF_8)

如果你不确定文件是如何编码的,你可以使用String#encode作为一个非常重的锤子来清除它,尽管你在此过程中会丢失一些字符。

File.read(filename).encode(
  Encoding::UTF_8,
  undef: :replace,
  invalid: :replace,
  replace: '' 
)

这表示如果字符未定义或无效,请将其替换,并将其替换为空字符串。当然,您可以调整选项以获得您想要的结果。