2017-07-14 6 views
0

Je reçois l'erreur:`write ': " xCF" de ASCII 8 bits en UTF-8 (encodage :: UndefinedConversionError) en écriture dans le fichier de url

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

de la ligne:

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

code correspondant est:

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)}` 
.. 

il fonctionne tout à fait bien si je le lance comme ruby lib/file.rb, mais donne une erreur quand je le lance dans des rails environnement: rails runner lib/file.rb.

La plupart des questions avec cette erreur font référence à des scénarios d'installation de gemmes. Ma conjecture que je dois inclure/mettre à jour quelques gemmes, mais n'ai aucune idée de qui.

Répondre

3

Utilisation force_encoding:

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

Il a travaillé, bonne réponse! Merci @Michael Malov – Vadim

+0

Vous pouvez choisir comme bonne réponse si oui @Vadim –

0

réponse acceptée est très bien, mais je pense qu'il est utile de mentionner que vous pouvez également définir le codage lors de la création/ouverture fichier temporaire, par exemple:

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