Я столкнулся с действительно странным явлением после обновления с Rails 2.3 / Ruby 1.8 до Rails 3 / Ruby 1.9. Как я уже упоминал в заголовке, я использую Postgres вместе с pg gem 0.10.0.
Когда я вызываю строковые или текстовые поля модели, содержащие Unicode, она работает правильно, и они возвращаются с кодировкой UTF-8.
Тем не менее, я также использую сериализованные хэши в ряде моделей, и всякий раз, когда я звоню, чтобы прочитать их содержимое (которое работало до обновления), я получаю следующее удивительное поведение:
- Если содержимое содержит данные Unicode, оно возвращается как ASCII и отображается как экранированные символы.
- Если содержимое содержит данные ASCII, оно возвращается как UTF-8 (правильно) и отображается правильно.
Я могу просто перекодировать строки Unicode-return-as-ASCII обратно в UTF-8, и все будет работать нормально. Тем не менее, это определенно хак, и мне это не кажется хорошим подходом.
Есть ли способ заставить корректно отображать сериализованные поля UTF-8? Если это где-то ошибка, есть идеи, где и если она уже известна?