相关疑难解决方法(0)

ActionView :: Template :: Error(不兼容的字符编码:UTF-8和ASCII-8BIT)

我使用的是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 (incompatible character encodings: UTF-8 and ASCII-8BIT)
Run Code Online (Sandbox Code Playgroud)

该错误指向我的HAML模板的第一行,其中包含以下代码:

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

我的理解是,这是因为我有一个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
Run Code Online (Sandbox Code Playgroud)

这是踢球者:我无法在开发或生产中使用独立乘客或杂种在我的Mac-OSX上本地重现此结果.我只能在linux上运行nginx + passenger的生产服务器上重现它.我已经在生产服务器的控制台中验证了后面提到的命令也都是UTF-8.

您是否遇到过同样的错误?您是如何解决的?

ruby ruby-on-rails passenger ruby-on-rails-3 ruby-1.9.2

15
推荐指数
2
解决办法
1万
查看次数