我使用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