2011-11-19 57 views
0

我有一个rake任务,它通过HTTP下载XML文档并将其写入文件。下载的XML具有相当令人讨厌的编码,但它被编码为8位ASCII码,XML上的代码页为“windows-1254”。通过rails上的rake任务保存文档时出现编码错误

url = URI("http://report.paragaranti.com/rasyonet_xml_fund_data.asp") 
http = Net::HTTP.new url.host 
http.read_timeout = 120 
response = http.get url.path 
response.error! unless response.instance_of? Net::HTTPOK 
filename = "#{Date.today}.xml" 
File.open(filename, 'w') {|f| f.write(response.body)} 

上面的代码在我将它作为一个简单的脚本执行时没有任何错误。然而,当我通过一个rake任务通过轨道做同样的事情,我得到以下异常:

"\xF0" from ASCII-8BIT to UTF-8 

它必须是与该字符串的编码,但我不知道为什么会发生或为什么代码在rails环境和外部环境中具有不同的行为。

回答

0

我设法通过做来解决这个问题:

File.open(filename, 'wb') {|f| f.write(response.body)} 

也就是说,写文件作为二进制。尽管如此,对于这里发生的事情的解释还是值得赞赏的(特别是关于为什么它在轨道环境中不起作用的部分..)

相关问题