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