2012-09-25 35 views
0

在我的Rails應用程序中,我做文件上傳,並且我的一些文件是用俄語(和其他...)。如果我只是嘗試:Ruby保存文件並對其進行編碼

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之前?

回答

0

您應該能夠使用重新編碼的任何數據:

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

請記住,不能被重新映射,無論出於何種原因的任何字符,可能會導致異常,所以一定要徹底測試。

+0

錯誤(有其他方法嗎? – byCoder

相關問題