ActionView :: Template :: Error (несовместимые кодировки символов: UTF-8 и ASCII-8BIT)

Я использую Ruby 1.9.2, Rails 3.0.4 / 3.0.5 и Phusion Passenger 3.0.3 / 3.0.4. Мои шаблоны написаны на HAML, и я использую гем MySQL2. У меня есть действие контроллера, которое при передаче параметра со специальным символом, например умлаутом, вызывает следующую ошибку:

ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)

Ошибка указывает на первую строку моего шаблона HAML, в которой есть следующий код:

<!DOCTYPE html>

Насколько я понимаю, это вызвано тем, что у меня есть строка UTF-8, которая объединяется со строкой ASCII-8BIT, но я не могу на всю жизнь понять, что это за строка ASCII-8BIT. Я проверил, что параметры в действии закодированы с использованием UTF-8, и я добавил кодировку: объявление UTF-8 в верхнюю часть шаблона HAML и файлов ruby, и я все еще получаю эту ошибку. В моем файле application.rb есть объявление config.encoding = "UTF-8" , и все следующие результаты в UTF-8:

ENV['LANG']
__ENCODING__
Encoding.default_internal
Encoding.default_external

Вот кикер: Я не могу воспроизвести этот результат локально на моем Mac-OSX с использованием автономного пассажира или дворняги ни в разработке, ни в производстве. Я могу воспроизвести его только на производственном сервере под управлением nginx + пассажира на Linux. Я проверил в консоли производственного сервера, что все упомянутые команды также приводят к UTF-8.

Испытывали ли вы эту же ошибку и как вы ее решили?

15
задан Pan Thomakos 7 March 2011 в 13:55
поделиться