Ruby 1.9 + Net::FTP => 编码::未定义转换错误



i从Ruby 1.8.7升级到1.9.2(和Rails 3.2.2),并且存在Net::FTP#gettextfile抛出Encoding::UndefinedConversionError 的问题

我正在尝试下载一个编码为utf-8的xml文件。如果我使用getbinaryfile,dowload可以正常工作,但我想了解为什么gettextfile不工作。

# -*- encoding : utf-8 -*-
# working
ftp = Net::FTP.open(host,user,password)
ftp.passive = true
ftp.getbinaryfile("some.xml","tmp/some.xml")
# not working
ftp = Net::FTP.open(host,user,password)
ftp.passive = true
# raises Encoding::UndefinedConversionError: "xFF" from ASCII-8BIT to UTF-8
ftp.gettextfile("some.xml","tmp/some.xml") 

我知道如果使用这样的File.open,我可以通过外部和内部编码:

File.open("some.xml", "r:ASCI-8BIT:UTF-8")

但是对于Net::FTP找不到这样的选项。

我还尝试了gettextfile的块版本,但这不太好用,并给出了相同的错误消息。

File.open("some.xml", "w:ASCII-8BIT:UTF-8") do |file|
  ftp.gettextfile("some.xml") { |line| file.write line }
end

有人知道这里出了什么问题吗?

使用ftp.getbinaryfile而不是ftp.gettextfile,然后它会再次工作。:)

相关内容

  • 没有找到相关文章

最新更新