Я использую 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.
Испытывали ли вы эту же ошибку и как вы ее решили?