我在Ruby 1.9.2p290中更改文本文件的编码时遇到了问题。我得到了错误"invalid byte sequence in UTF-8 (ArgumentError)"。问题(我认为)在于字符集似乎是未知的。
如果我从命令行执行以下操作:
$ file test.txt
I get:
Non-ISO extended-ASCII English text, with CRLF line terminators
或者,作为替代方案,如果我执行:
$ file -i test.txt
I get:
test.txt: text/plain; charset=unknown
然而,在 Ruby 中,如果我执行以下操作:
data = File.open("test.txt").read
puts data.encoding.name
puts data.valid_encoding?
我能理解:
UTF-8
false
这是我代码的简化片段:
以下是简化后的代码:
data = File.open("test.txt").read
data.encode!("UTF-8")
data.each_line do |line|
newfile_data << line
end