Ruby CSV将ñ写入其代码形式,而不是其实际形式

Ruby CSV将ñ写入其代码形式,而不是其实际形式,ruby,csv,encoding,utf-8,iso-8859-1,Ruby,Csv,Encoding,Utf 8,Iso 8859 1,我有一个CSV文件。我使用以下方法检查了它的编码: File.open('C:\path\to\file\myfile.txt').read.encoding 它返回的编码为: => #<Encoding:IBM437> 考虑到重音字符是该单词的重要部分,这是一个问题,我希望该字符在新文件中显示为原样 我错过什么了吗?我试过了。来源:目标编码,但无效: ISO-8859-1:UTF8,反之亦然 ISO-8859-1:Windows-1252,反之亦然 我错过什么了吗 这是

我有一个CSV文件。我使用以下方法检查了它的编码:

File.open('C:\path\to\file\myfile.txt').read.encoding
它返回的编码为:

=> #<Encoding:IBM437>
考虑到重音字符是该单词的重要部分,这是一个问题,我希望该字符在新文件中显示为原样

我错过什么了吗?我试过了。来源:目标编码,但无效:

ISO-8859-1:UTF8,反之亦然 ISO-8859-1:Windows-1252,反之亦然 我错过什么了吗

这是我的ruby版本,如果您需要知道:

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

提前谢谢

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

Encoding.default_external = "iso-8859-1"
它告诉Ruby,正在读取的文件是用ISO-8859-1编码的,因此正确地解释了ñ字符


Darshan Computing的答案值得称赞。只需查找更新2。

您使用的是Ruby 1.9.3p392,它存在已知的安全漏洞!您应该尽快升级到最新的1.9.3,目前为1.9.3-p448或2.0。您好@AndrewMarshall。好的,我将升级到p448,但还没有升级到2.0,因为我有一个rails项目正在进行,它与我受命完成的ruby脚本无关。你认为升级会有助于解决编码问题吗?
ruby 1.9.3p392 (2013-02-22) [i386-mingw32]
Encoding.default_external = "iso-8859-1"