Ruby on Rails 上传文件问题 奇数 utf8 转换错误

标签 ruby ruby-on-rails-3 file-upload

我正在尝试上传文件,但出现以下错误:

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

我非常关注 Rails 指南的工作。这是我正在使用的代码。

file = params[:uploaded_file]

File.open(Rails.root.join('public', 'images', file.original_filename), 'w') do |f|
  f.write(file.read)
end

我不明白为什么它不起作用。我做错了什么?

更新 -- 这是应用程序跟踪

app/controllers/shows_controller.rb:16:in `write'
app/controllers/shows_controller.rb:16:in `block in create'
app/controllers/shows_controller.rb:15:in `open'
app/controllers/shows_controller.rb:15:in `create'

最佳答案

我相信这是 Rails 3 与 ruby​​ 1.9 的工作方式的变化,因为 1.9 支持编码,它将尝试将所有字符串转换为您在应用程序配置 (application.rb) 中设置的任何编码,通常是 'utf -8'。

为避免编码问题,以二进制模式打开文件,因此对于二进制可写模式,您的模式将为“wb”:

File.open(Rails.root.join('public', 'images', file.original_filename), 'wb') do |f|
  f.write(file.read)
end

关于Ruby on Rails 上传文件问题 奇数 utf8 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4988724/

相关文章:

c# - 使用本地应用程序从服务器获取文件

jquery - 带有模型 OneToOneField 的 django-jquery-file-upload

ruby - 如何将字符串拆分为数组,并保持换行符?

ruby-on-rails - 如何使部分代码仅针对特定集合显示

ruby-on-rails-3 - 防止 Heroku 在开发模式下使用预编译 Assets

ruby-on-rails - Ruby on Rails : How to override the 'show' route of a resource?

javascript - TinyMCE 和 pluploader 不能一起工作

mysql - 添加refinerycms gem后迁移数据库的问题

ruby - 在数组中找到最小的缺失正整数

ruby-on-rails - 使用旧版 ruby​​ 的 Ruby Rails webrick 服务器