【问题标题】:In Ruby on Rails, are '#encoding: utf-8' and 'config.encoding = "utf-8"' different?在 Ruby on Rails 中,'#encoding: utf-8' 和 'config.encoding = "utf-8"' 不同吗?
【发布时间】:2011-10-08 18:45:56
【问题描述】:

我可以通过在其顶部添加注释行来指定任何 ruby​​ 文件以使用特定编码:

#encoding: utf-8

但是在 Rails 的config/application.rb 中,我发现了这个:

config.encoding = "utf-8"

它们有什么不同吗?如果我设置了config.encoding = "utf-8",我还需要#encoding: utf-8吗?

【问题讨论】:

    标签: ruby-on-rails ruby encoding


    【解决方案1】:

    config/application.rb 中的 config.encoding = "utf-8" 部分与 rails 应如何解释内容有关。

    #encoding: utf-8 在 ruby​​ 文件中告诉 ruby​​ 该文件包含非 ascii 字符。

    这两种情况是不同的。第一个(在config/application.rb 中)告诉rails 一些事情,与ruby 本身应该如何解释源文件完全无关。

    你可以设置环境变量RUBYOPT=-Ku,如果你比较懒,并且希望ruby自动将.rb文件的默认文件编码设置为utf-8,但我宁愿建议你把你的非ascii翻译文件中的位并使用I18n.t 引用。

    【讨论】:

    • how rails should interpret content?你能举个例子吗?
    • 这与例如在与数据库通信或从表单中检索数据时应该使用的编码轨有关。
    • 实际上#encoding: utf-8 告诉ruby 将文件的源解释utf-8,即使它不包含任何非ascii 字符。 ;)
    • 如果变量数据本身有重音字符怎么办? (e)。例如,在我的 Cucumber 测试中,我需要使用重音字符来测试我的 repo。但是 Rails 不允许我打印这些类型的字符。
    • 整个#encoding: utf-8 业务仅在使用 2.0.0 之前的 ruby​​ 版本时才会出现问题。从 2.0.0 开始,ruby 现在默认将源文件解释为 utf-8。
    猜你喜欢
    • 2015-09-18
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多