2010-12-16 2 views
4

несовместимых кодировки символов: UTF-8 и ASCII-8bitRails 3 - (несовместимые кодировки символов: UTF-8 и ASCII-8bit):

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

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

+3

Я не могу ответить за Ruby, но в принципе нет такой вещи, как 8-бит ASCII. http://en.wikipedia.org/wiki/ASCII - это 7-битное кодирование, когда бит никогда не установлен. «é» существует в 8-битных кодировках * nix, таких как http://en.wikipedia.org/wiki/ISO/IEC_8859-1, кодировки Windows, такие как http://en.wikipedia.org/wiki/Windows-1252 , и Apple Macintosh, например, http://en.wikipedia.org/wiki/Mac_OS_Roman. Он находится в другом положении в MacRoman, чем два других, и требует двух байтов в UTF-8. – hippietrail 2010-12-17 11:38:24

+0

У вас есть копия исходного письма, которое вызвало это? Я сталкиваюсь с чем-то похожим и хотел бы иметь хорошую тестовую электронную почту (по причинам, более сложным, чем я хотел бы объяснить, я не могу получить тот, который терпит неудачу для меня) – jwg2s 2014-08-07 15:38:24

ответ

2

Я помню разрешение один раз с помощью «строки» .force_encoding («UTF-8»)

3

Я получил эту ошибку, когда есть encoding mismatch между тем, как мой рубин приложение разборе строк и как базы данных хранит их.

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

# encoding: utf-8 

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

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

За время того, это может быть вызвано issue в почте 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 
Смежные вопросы