在ruby 1.9.1中编译rails中的问题

我使用的是rails 2.3.3和ruby 1.9.1。

我试图渲染一个包含部分的视图。 在部分i中输出以UTF8编码的模型的字段。 这失败了

ActionView::TemplateError (incompatible character encodings: ASCII-8BIT and UTF-8) on line #248 of app/views/movie/show.html.erb: 245:  246: 
247: 248: 'movie_stats' %> 249: 250: 251:

另一方面,如果我直接在视图中使用该字段(当它不是部分时),我可以输出具有utf8内容的字段。

我怎样才能解决这个问题? 我已经尝试设置默认编码,但似乎没有用。

我也有这个,所以我觉得它值得有正确的答案。

2.8.1 MySql gem不是utf-8友好的,因此它有时会返回UTF字符串并且对Rails说谎,告诉它它们是ASCII,而实际上它们是UTF-8。 这让事情爆炸了。

所以:你可以猴子补丁或获得兼容的MySql gem。 见: http : //gnuu.org/2009/11/06/ruby19-rails-mysql-utf8/

在Ruby 1.9中,ERB的编码似乎存在问题。 更多细节在这张灯塔票中 。 已经包含了一个带有解决方法的补丁,也许它适用于您?

问题是ruby 1.9发行版中的erb代码。 当它编译模板代码时会强制执行’ASCII-8bit’编码,问题是当模板代码有多字节字符时,模板代码以’ASCII-8bit’字符串返回,当此字符串与’UTF8’连接时具有多字节字符的字符串引发exception,因为这两种编码之间的字符串仅在两者都具有七位字符时才兼容。

关于字符串如何来回传递(特别是字符串的编码),Ruby 1.9x和mysql gem之间似乎存在不兼容性。

要修复,请运行

 gem install mysql2 

在服务器上并更新数据库配置文件以使用此gem而不是前一个gem。