我收到错误:
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环境中运行它时会出错:rails runner lib/file.rb
。
此错误的大多数问题都涉及gem安装方案。我猜我必须包含/更新一些宝石,但不知道哪个宝石。
答案 0 :(得分:7)
接受的答案很好,但我认为值得一提的是您还可以在创建/打开Tempfile时设置编码,例如:
Tempfile.new("file.pdf", encoding: 'ascii-8bit') # or 'utf-8'
答案 1 :(得分:6)
使用open(uri) {|url_file| tempfile.write(url_file.read.force_encoding("UTF-8"))
:
`dataframe %$%
t.test(vector1, vector2, paired = T)
dataframe %$%
cohen.d.(vector1, vector2, paired = T)`
答案 2 :(得分:3)
这应该可以解决问题。
data = URI.parse(@download_link).read
tempfile = Tempfile.create(file_name)
tempfile.binmode # This will help deal encoding problem with download files from the internet
tempfile.write(data)
binmode是二进制模式