如何处理“不兼容的字符编码:ASCII-8BIT和GBK”异常?

3
我正在阅读《Rails敏捷开发》第三版。在完成depot应用程序时,我输入了一些中文字符作为用户名。但是我遇到了这个错误,看起来似乎与Ruby1.9有关。
我的环境是Windows XP,Ruby1.9,Rails 2.3.8和sqlite3。
以下是有关此错误的详细信息:

显示app/views/layouts/store.html.erb,其中第43行引发了错误:

不兼容的字符编码:ASCII-8BIT和GBK

提取的源代码(大约在第43行左右):

40: <% if flash[:notice] -%>

41: <%=h flash[:notice] %>

42: <% end -%>

43: <%= yield :layout %>


有人可以帮我解决这个问题吗?


如果您能提供完整的堆栈跟踪信息,那么我们就可以帮助您正确地解决问题。 - thomasfedb
3个回答

2
我发现添加

标签可以使文本在HTML页面中以段落形式呈现。
# encoding: utf-8

开始时更简单(可能更优雅)


0
你可以尝试将这个放在你的 environment.rb 文件中:
Encoding.default_internal = Encoding.find("UTF-8")

你可能还会在Windows中出现控制台编码不正确的问题。请确保将其设置为Unicode。

似乎这个方法可行。当我在我的environment.rb文件中添加Encoding.default_internal = Encoding.find("UTF-8")时,我得到了nil错误。 - Chris
它不起作用了。我得到了这个错误信息:“内部服务器错误,当您没有预期时,您有一个空对象!您可能希望获得一个数组实例。该错误发生在评估nil.each时。” - Chris
故障安全响应期间出现错误:在从ASCII-8BIT转换为GBK时,从ASCII-8BIT到UTF-8的转换中出现"\xE6"。 - Chris

0

这很荒谬,但我遇到了同样的问题,直到

我发现在一个类名中只有西里尔字母“C” %)

所以也许检查一下是否使用了来自其他键盘布局的字母,如c、a、o、p等,是个好建议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接