处理不兼容的字符编码:UTF-8和ASCII-8BIT

时间:2013-11-19 15:38:55

标签: ruby-on-rails ruby utf-8 character-encoding passenger

我在生产中遇到不兼容的字符编码错误。我尝试在本地重现它,但没有运气。这是错误消息:

A ActionView::Template::Error occurred in controller_name#action_name:

 incompatible character encodings: UTF-8 and ASCII-8BIT
 activesupport (3.0.5) lib/active_support/core_ext/string/output_safety.rb:80:in `concat'
application.rb中的

config.encoding已设置为“utf-8”。令我感到困惑的是,这个问题在乘客重启后只持续了一段时间,并在一段时间后消失。进一步调试异常回溯给了我这个:

activesupport (3.0.5) lib/active_support/core_ext/string/output_safety.rb:80:in `concat'
activesupport (3.0.5) lib/active_support/core_ext/string/output_safety.rb:80:in `concat'
actionpack (3.0.5) lib/action_view/template/handlers/erb.rb:14:in `<<'
app/views/web/controller_name/action_name.erb:98
<%currentUrl = request.url%>
Line 98: <a href="<%= raw currentUrl %>" id="xyz">

ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)”中提到ActionDispatch::Request可能导致问题,但我对一段时间后问题如何解决自己一无所知!

2 个答案:

答案 0 :(得分:1)

如果您使用来自数据库的任何文本收到此错误,则需要使用mysql2而不是database.yml中的mysql适配器。并在你的Gemfile中添加mysql2 gem。这将解决您的问题。

答案 1 :(得分:0)

尝试将# encoding: UTF-8添加到文件顶部,将文件编码设置为UTF-8。