Ruby保存文件并对其进行编码

时间:2012-09-25 15:58:24

标签: ruby-on-rails ruby encoding

在我的rails应用程序中,我进行文件上传,我的一些文件是俄语(和其他...)。如果我只是尝试:

 require 'fileutils'
     uploaded_io = params[:aut]
     File.open(Rails.root.join('public', 'uploads_prices', uploaded_io.original_filename), 'w', :encoding => "r:UTF-8") do |file|
       file.write(uploaded_io.read)
     end

我收到错误

如果我写

require 'fileutils'
    uploaded_io = params[:aut]
    File.open(Rails.root.join('public', 'uploads_prices', uploaded_io.original_filename), 'wb') do |file|
      file.write(uploaded_io.read)
    end

一切正常,但是当我解析我的csv文件时,我需要使用选项解码它们

  

R:ISO-8859-15:UTF-8

这不好。那么,如果我将文件发送到方法,我怎么能这样做,它保存它,但在它将此文件转换为utf8之前?

1 个答案:

答案 0 :(得分:0)

您应该能够使用以下方法重新编码任何数据:

uploaded_io.read.encode('UTF-8')

请记住,无论出于何种原因,任何无法重新映射的字符都可能导致异常,因此请务必进行彻底测试。