2017-07-14 132 views
0

文件我得到错误:'写': “ XCF” 从ASCII-8BIT为UTF-8(编码:: UndefinedConversionError),而写入从URL

write': "\xCF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) 

从线:

open(uri) {|url_file| tempfile.write(url_file.read)} 

相关代码:

require 'tempfile' 
require 'open-uri' 
require 'uri' 
.. 
uri = URI.parse(@download_link) 
tempfile = Tempfile.create(file_name) 
open(uri) {|url_file| tempfile.write(url_file.read)}` 
.. 

它运行,如果我运行它像ruby lib/file.rb完全没问题,但给人的错误,当我在轨运行环境:rails runner lib/file.rb

此错误的大多数问题都涉及到gem安装场景。我猜想我必须包括/更新一些宝石,但不知道哪个。

回答

3

使用force_encoding

open(uri) {|url_file| tempfile.write(url_file.read.force_encoding("UTF-8")) 
+0

它的工作,好答案!谢谢@迈克尔·马洛夫 – Vadim

+0

你可以选择它作为正确的答案,如果是的话@Vadim –

0

接受的答案是好的,但我认为这是值得一提的是,也可以在创建/打开它视为档案,例如,当设置编码:

Tempfile.new("file.pdf", encoding: 'ascii-8bit') # or 'utf-8'