【问题标题】:Why does Rails 3 pitch a fit about UTF-8 character encoding?为什么 Rails 3 支持 UTF-8 字符编码?
【发布时间】:2012-02-24 09:04:04
【问题描述】:

我刚开始使用亮丽的 Rails 新版本 3.2.1 开发一个新的 Rails 应用程序。以前,我只使用了 3.0.9 版本。在我描述我的错误之前,让我们知道我在 Windows 7 32 位上使用 Ruby 版本 ruby 1.9.2p290 (2011-07-09) [i386-mingw32]。我最近没有更改我的 Ruby 版本。我正在使用 Notepad++ v5.9.3 并且没有(故意)更改任何默认设置。

当我第一次运行我的新应用时,我收到一条奇怪的消息:

ActionView::WrongEncodingError in Index#index

Your template was not saved as valid UTF-8. Please either specify UTF-8 as the encoding for your template in your text editor, or mark the template with its encoding by inserting the following as the first line of the template:

# encoding: <name of correct encoding>.

我不明白为什么我会突然收到这个错误。它是对 Rails 3.2.1 所做更改的一部分吗?通过进入 Notepad++ 并使用编码菜单选项“转换为 UTF-8”很容易修复它,但是,就像我说的,我以前从来没有这样做过。

另一个奇怪的事情是,当我使用生成器时,即使是 Rails 生成的文件也是使用 ANSI 编码生成的。总的来说,我很困惑,我想确保我正在使用良好的编程实践。

【问题讨论】:

    标签: ruby-on-rails utf-8


    【解决方案1】:

    它是 Rails 3.2.1 更改的一部分吗?通过进入 Notepad++ 并使用编码菜单选项“转换为 UTF-8”很容易解决这个问题,但是,就像我说的,我以前从来没有这样做过。

    是的。 Rails 3.0+(我认为)要求所有模板都以 UTF-8 编码保存。您需要将文件保存为 UTF-8。如果这仍然不起作用,请通过在 .rb 文件的第一行添加以下内容来明确设置编码:

    # encoding: utf-8
    

    将此添加到.erb 模板的第一行:

    <%# encoding: utf-8 %>
    

    请参阅 this related questionthis similar problem。在我看来,自从您最初创建文件以来,您的编辑器的编码设置发生了变化。

    另一个奇怪的事情是,当我使用生成器时,即使是 Rails 生成的文件也是使用 ANSI 编码生成的。总的来说,我很困惑,我想确保我正在使用良好的编程实践。

    这很奇怪,我不确定我对此有什么好的建议,然后尝试将 Encoding.default_external = "UTF-8" 添加到您的 config.ruconfig/environment.rb 文件中。

    【讨论】:

      【解决方案2】:

      我曾尝试encoding: utf-8 方法,但没有成功,但当我使用Notepad++ 更改编码时,我解决了这个问题。谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        • 2021-12-17
        • 2012-02-14
        • 1970-01-01
        相关资源
        最近更新 更多