странная проблема с кодировкой байтов UTF-8 в Rails, IE, PostgreSQL, delayed_job - PullRequest
1 голос
/ 18 апреля 2011

Я вижу относительно странную (и трудно диагностируемую) ошибку с комбинацией IE8, Rails 3.0.3, PostgreSQL и delayed_job.

У меня есть текстовая область на одной из моих страниц, и в контроллере я задерживаю сообщение с delayed_job, которое включает в себя объект, имеющий содержимое из текстовой области:

SomeMailer.delay.send_message(message)

Этоотлично работает на Chrome, FF, Safari.Однако в IE8 только и только , когда я фактически ввожу текст в текстовую область, и это похоже на то, только когда я ввожу возврат каретки в текстовой области (я думаю), яполучить эту ошибку от контроллера:

неверная последовательность байтов в UTF-8

Мне кажется, что это происходит, когда delayed_job сериализует задание в базу данных через ActiveRecord,что ему не нравится кодировка символов в новой строке (\ r \ n).Это немного сложно понять, потому что я не знаю, это проблема IE, Rails, delayed_job или Postgres.

Примечание : я получаю эту ошибку локально, ноне похоже, что эта ошибка появляется в Heroku - так что, может быть, их база данных настроена лучше, чем я?

Environment :

  1. Rails 3.0.3
  2. Ruby 1.9.2
  3. Postgres 8.4 - кодировка UTF8, сопоставление en_US.UTF-8
  4. delayed_job 2.1.4
  5. IE 8

Будем благодарны за любые мысли.

1 Ответ

1 голос
/ 18 апреля 2011

Вы устанавливаете свою кодировку в HTML, который отправляется в IE8?Например:

<!doctype html>    
  <head>
    <meta charset="utf-8">
  </head>

Возможно, другие браузеры работают с отсутствующей информацией и принимают кодировку UTF-8 при кодировании данных из текстовой области.

...