2011-08-02 44 views
0

我有一個CSV文件。如果文件只包含英文字符,則一切正常,文件上傳幷包含數據。但是,如果文件包含非英文字符,則爲上傳,但上傳的文件爲空。Rails 3:使用非英文字符上傳csv文件

希望,任何人都可以提供幫助。

UPDATE:

背景: 導軌:導軌3.0.9,紅寶石:紅寶石1.9.2

形式:

<%= form_tag({:action => :import}, :multipart => true) do |f| %> 
    <%= collection_select(:contact, :list_id, current_user.lists, :id, :title) %> 
    <%= file_field_tag 'upload' %> 
    <%= submit_tag("Import") %> 
<% end %> 

控制器:

def import 
    begin 
    Contact.upload(params[:upload], current_user, params[:contact][:list_id]) 
    redirect_to :action => "index" 
    rescue Exception => e 
    end 
end 

型號:

def upload(uploaded_io, user_id, list_id) 
    File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'w') do |file| 
    file.write(uploaded_io.read) 
    end 

    self.import(uploaded_io.original_filename, user_id, list_id) 
end 
+2

你如何上傳文件?你使用的是什麼版本的紅寶石? – NARKOZ

回答

1

檢查這個庫,它涉及不同的編碼:Iconv

我想你應該在你的upload方法使用它(與IO操作)

+0

感謝您的評論。我會試試看。 –

+0

不客氣,很高興幫助:) – bor1s

1

我已經解決了問題。它開始按預期工作,然後我將'w'更改爲'wb',以二進制模式打開文件。

謝謝!希望它幫助別人。