MongoMapper Ошибка "\ xFF" от ASCII-8BIT до UTF-8 при сохранении файла в БД - PullRequest
3 голосов
/ 25 августа 2011

У меня проблема с сохранением файла (из удаленного API) в MongoDB, я с Ruby 1.9

class Foo
  include ::MongoMapper::Document
  key :bar, String
end

Я получаю следующую ошибку: "\ xFF" из ASCII-8BIT в UTF-8

Я пробовал следующие вещи:

foo.bar = pdf_data.encode('UTF-8')
foo.bar = pdf_data.force_encoding('UTF-8')
foo.bar = pdf_data.ensure_encoding('UTF-8',
  :external_encoding  => :sniff,
  :invalid_characters => :transcode
) # with github.com/Manfred/Ensure-encoding

Ну, любой из них работает, я получаю ошибку при сохранении вызова ...

Я смотрю в сети, но не нашел четкого ответа (или, по крайней мере, решил мою проблему) ... Любая идея, что я должен сделать, чтобы иметь возможность хранить его?

1 Ответ

6 голосов
/ 16 марта 2012

Если вы используете TempFile, убедитесь, что вы перевели его в двоичный режим. Пример:

file = Tempfile.new('tmp').tap do |file|
  file.binmode # must be in binary mode
  file.write image.to_blob
  file.rewind
end
...