【问题标题】:Rails 3: Upload csv file with non-english charactersRails 3:上传带有非英文字符的csv文件
【发布时间】:2011-10-17 22:56:59
【问题描述】:

我有一个 CSV 文件。如果文件只包含英文字符,一切正常,文件上传并包含数据。但是,如果文件包含非英文字符,它会上传,但上传的文件是空的。

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

更新:

背景: Rails:rails 3.0.9,Ruby:ruby 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

【问题讨论】:

  • 如何上传文件?你用的是什么版本的红宝石?

标签: ruby-on-rails ruby file file-upload csv


【解决方案1】:

我已经解决了一个问题。它开始按预期工作,然后我将“w”更改为“wb”以二进制模式打开文件。

谢谢!希望对其他人有所帮助。

【讨论】:

    【解决方案2】:

    检查这个库,它处理不同的编码:Iconv

    我认为你应该在 upload 方法中使用它(带有 IO 操作)

    【讨论】:

    • 感谢您的评论。我试试看。
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2012-03-15
    • 2013-07-13
    相关资源
    最近更新 更多