我在处理 Windows 机器上生成的表格数据的文本文件时遇到问题。我正在使用 Ruby 1.8。在处理文件中的第二行时,以下给出错误 ("\000" (Iconv::InvalidCharacter))。第一行已正确转换。
require 'iconv'
conv = Iconv.new("UTF-8//IGNORE","UTF-16")
infile = File.open(tabfile, "r")
while (line = infile.gets)
line = conv.iconv(line.strip) # FAILS HERE
puts line
# DO MORE STUFF HERE
end
奇怪的是它毫无问题地读取并转换了文件中的第一行。我在 Iconv 构造函数中有 //IGNORE 标志——我认为这应该抑制这种错误。
我一直在兜圈子。任何建议将不胜感激。
谢谢!
编辑:霍布斯解决方案解决了这个问题。谢谢你。只需将代码更改为:
require 'iconv'
conv = Iconv.new("UTF-8//IGNORE","UTF-16")
infile = File.open(tabfile, "r")
while (line = infile.gets("\x0a\x00"))
line = conv.iconv(line.strip) # NO LONGER FAILS HERE
# DOES MORE STUFF HERE
end
现在我只需要找到一种方法来自动确定要使用哪个获取分隔符。