获取编码错误无法将ascii-8bit转换为utf-8bit

时间:2013-08-14 05:04:25

标签: ruby-on-rails ruby ruby-on-rails-3

我正在使用此代码上传用户的个人资料图片

if params[:user][:image].present?
  uploaded_io = params[:user][:image]
  name = "image_" << @user.username << uploaded_io.original_filename
  File.open(Rails.root.join('public', 'images','profile',name ), 'w') do |file|
    file.write(uploaded_io.read)
  end
end  

但是当我运行它时出现此错误cannot convert ascii-8bit to utf-8bit 所以我所做的是我在application.rb文件中更改了我的默认编码,例如来自config.encoding = "ascii-8bit"的此config.encoding = "utf-8"。它开始工作正常。

但问题是现在我正在向用户发送邮件,以便从简单的rails邮件程序成功注册,现在在发送邮件之前,它给了我这个错误cannot convert utf-8bit to ascii-8bit

现在我完全被击中,其中只有一个人同时工作。我已经为enforce_encoding on strings尝试了很多建议的解决方案,但它们似乎都没有效果。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

将'w'改为'wb'

if params[:user][:image].present?
  uploaded_io = params[:user][:image]
  name = "image_" << @user.username << uploaded_io.original_filename
  File.open(Rails.root.join('public', 'images','profile',name ), 'wb') do |file|
    file.write(uploaded_io.read)
  end
end