Rails 3: Загрузить CSV-файл с неанглийскими символами - PullRequest
0 голосов
/ 02 августа 2011

У меня есть файл CSV.Если файл содержит только английские символы, все работает нормально, файл загружается и содержит данные.Но, если файл содержит неанглийские символы, он загружается, но загруженный файл пуст.

Надеюсь, кто-нибудь может помочь.

ОБНОВЛЕНИЕ:

Фон: Rails: rails3.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

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Я решил проблему.Он начинает работать, как и ожидалось, затем я изменил w на wb для открытия файла в двоичном режиме.Надеюсь, это поможет кому-то еще.

1 голос
/ 02 августа 2011

проверьте эту библиотеку, она имеет дело с различными кодировками: Iconv

Я думаю, вы должны использовать его в вашем upload методе (с операциями ввода-вывода)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...