CSV将Ñ写入其代码形式而不是其实际形式

时间:2013-11-20 03:53:56

标签: ruby csv encoding utf-8 iso-8859-1

我有一个CSV文件。我用这个检查了它的编码:

File.open('C:\path\to\file\myfile.txt').read.encoding



它返回编码为:

=> #<Encoding:IBM437>



我正在每行读取这个CSV - 剥离空间和做其他事情。在“清理”之后,我将其推送到新文件。我是这样做的:

CSV.foreach(file_read, encoding: "IBM437:UTF-8") do |r|

  # some code

  CSV.open(file_appended, "a", col_sep: "|") do |csv|
    csv << r
  end
end



现在我的问题是,在我正在阅读的CSV中,有一个带有重音字符的单词 - 确切地说是Ñ。此字符将作为

附加到新文件
\u2564

考虑到重音字符是该单词的重要组成部分,这是一个问题,我希望该字符按原样出现在新文件中。

我错过了什么吗?我试过了ff。来源:目的地编码,但无济于事:

  • ISO-8859-1:UTF8(反之亦然)
  • ISO-8859-1:Windows-1252(反之亦然)

我错过了什么吗?

这是我的ruby版本,就像你需要知道:

ruby 1.9.3p392 (2013-02-22) [i386-mingw32]

提前致谢!

1 个答案:

答案 0 :(得分:0)

下面的一行解决了我的问题:

Encoding.default_external = "iso-8859-1"

它告诉Ruby,正在读取的文件是用ISO-8859-1编码的,因此正确解释了Ñ字符。

归功于Darshan Computing的回答here。只需查看更新#2。