2017-07-14 133 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'