Rails 3 - (несовместимые кодировки символов: UTF-8 и ASCII-8BIT): - PullRequest
4 голосов
/ 17 декабря 2010

несовместимые кодировки символов: UTF-8 и ASCII-8BIT

Я нахожу много старой информации, но скудный совет об этом сообщении об ошибке, но удивляюсь, каково текущее состояние, так как кажется, что его меньше обсуждают в сети. Это происходит для меня, когда я пытаюсь визуализировать текст из файла локали, который содержит символы с акцентом, например 'é'.

Я использую rails 3.0.3, ruby ​​1.9.2 (и пробовал 1.8.7 с тем же результатом), адаптер mysql2, кодировка utf8.

Ответы [ 3 ]

3 голосов
/ 22 июня 2011

Я получил эту ошибку, когда существует несоответствие кодировки между тем, как мое приложение Ruby выполняет синтаксический анализ строк, и тем, как база данных хранит их.

Чтобы исправить это для себя, когда я имею дело с UTF-8, я должен убедиться, что у меня есть это в верхней части рассматриваемого файла .rb:

# encoding: utf-8

В качестве альтернативы, вы можете глобально установить кодировку UTF-8 по умолчанию в файле конфигурации приложения с помощью этой строки :

Encoding.default_internal, Encoding.default_external = ['utf-8'] * 2

И, наконец, я убедился, что моя база данных использует UTF-8 для внутреннего использования, установив параметр encoding в database.yml:

development:
  adapter: postgresql
  encoding: UTF8
  database: pg_development
  username: abe
  pool: 5
2 голосов
/ 03 июля 2013

В настоящее время это может быть вызвано проблемой в Mail 2.5.4, которая «загрязняет» кодировку почтового объекта.

@email = Email.find(1)
@email.body.encoding # This is a fresh instance from db, still okay
Mail.new(@email.body)
@email.body.encoding # value has been changed
2 голосов
/ 18 марта 2011

Я помню, как разрешил это один раз, используя "string" .force_encoding ("UTF-8")

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