我从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
有谁知道这里有什么问题?
答案 0 :(得分:3)
使用ftp.getbinaryfile而不是ftp.gettextfile然后它再次工作。 :)