0

在我的 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 之前,我该怎么做呢?

4

1 回答 1

1

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

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

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

于 2012-09-25T20:53:54.413 回答