Я использую 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 + passenger на linux. В консоли рабочего сервера я проверил, что все упомянутые выше команды также приводят к UTF-8.
Испытывали ли вы эту же ошибку и как ее решили?