Как бороться с «несовместимыми кодировками символов: исключение ASCII-8BIT и GBK»?

Я читаю «Гибкая веб-разработка с Rails.3rd». Когда я заканчиваю работу с приложением депо, я ввожу в качестве имени пользователя китайский иероглиф. Но я получил эту ошибку, кажется, это как-то связано с Ruby1.9.

Моя среда - это окно XP, Ruby1.9, Rails 2.3.8 и sqlite3.

Ниже приведены подробности об этой ошибке:


Показано app/views/layouts/store.html.erb, где строка № 43 поднята:

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

Извлеченный источник (около строки № 43):

40: ‹% если flash[:notice] -%>

41: ‹%=h flash[:notice] %>

42: ‹% конец -%>

43: ‹%= выход :макет %>


Кто-нибудь может помочь мне решить эту проблему?


person Chris    schedule 26.07.2010    source источник
comment
Было бы хорошо, если бы вы могли предоставить полную трассировку стека. Тогда мы могли бы помочь вам решить проблему должным образом.   -  person thomasfedb    schedule 10.06.2012


Ответы (3)


Я узнал, что добавление

# encoding: utf-8

в начале намного проще (и, возможно, элегантнее)

person piffy    schedule 10.06.2012

Вы можете попробовать поместить это в свой файл environment.rb:

Encoding.default_internal = Encoding.find("UTF-8")

Вы также можете усугубить проблему с неправильной кодировкой консоли в Windows. Убедитесь, что он установлен в Unicode.

person Preston Marshall    schedule 26.07.2010
comment
Кажется, это работает. Я получил нулевую ошибку, когда добавил Encoding.default_internal = Encoding.find(UTF-8) в свой файл environment.rb. - person Chris; 28.07.2010
comment
Это не работает. Я получил эту ошибку. Внутренняя ошибка сервера У вас есть нулевой объект, хотя вы этого не ожидали! Вы могли ожидать экземпляр Array. Произошла ошибка при оценке nil.each - person Chris; 29.07.2010
comment
Ошибка во время отказоустойчивого ответа: \xE6 из ASCII-8BIT в UTF-8 при преобразовании из ASCII-8BIT в GBK - person Chris; 29.07.2010

это смешно, но у меня была такая же проблема, пока

я обнаружил, что у меня просто была кириллица "C" в названии одного из классов %)

так что, возможно, это хороший совет, чтобы проверить, не используете ли вы что-то вроде c, a, o, p и т. д. из другой раскладки клавиатуры.

person okliv    schedule 12.10.2011