我在生产中遇到不兼容的字符编码错误。我尝试在本地重现它,但没有运气。这是错误消息:
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
可能导致问题,但我对一段时间后问题如何解决自己一无所知!
答案 0 :(得分:1)
如果您使用来自数据库的任何文本收到此错误,则需要使用mysql2而不是database.yml中的mysql适配器。并在你的Gemfile中添加mysql2 gem。这将解决您的问题。
答案 1 :(得分:0)
尝试将# encoding: UTF-8
添加到文件顶部,将文件编码设置为UTF-8。