我使用Ruby 1.9.2,Rails 3.0.4/3.0.5和Phusion Passenger 3.0.3/3.0.4。我的模板是用HAML編寫的,我使用的是MySQL2 gem。我有一個控制器動作,當通過具有特殊字符,如變音參數,使我有以下錯誤:ActionView :: Template :: Error(不兼容的字符編碼:UTF-8和ASCII-8BIT)
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)
錯誤指向我的HAML模板的第一線,它具有以下代碼它:
<!DOCTYPE html>
我的理解是,這是因爲我有正接受ASCII-8BIT串級聯一個UTF-8字符串引起的,但我不能爲我的生活找不出什麼ASCII-8BIT字符串是。我已經檢查過動作中的參數是使用UTF-8編碼的,並且我已經在HAML模板和ruby文件的頂部添加了一個編碼:UTF-8聲明,並且仍然出現此錯誤。我的application.rb中的文件中有一個config.encoding = "UTF-8"
聲明以及所有結果在UTF-8如下:
ENV['LANG']
__ENCODING__
Encoding.default_internal
Encoding.default_external
這裏的踢球者:我不能在本地在我的Mac-OSX使用獨立旅客或雜種重現這一結果在開發或生產中。我只能在Linux上運行nginx + passenger的生產服務器上重現它。我已經在生產服務器的控制檯中驗證了後者提到的所有命令都以UTF-8格式生成。
你有沒有經歷過同樣的錯誤,你是如何解決它的?
有同樣的錯誤,我想知道爲什麼這是在生產Nginx /乘客發生。它正在正確設置LC_All。但請求.env是ASCII。在本地服務器上,它的utf-8k – 2014-12-18 18:12:49
在乘客https://github.com/phusion/passenger/issues/1328上添加了一個問題 – 2014-12-19 11:30:05