在Ruby on Rails中,'#encoding:utf-8'和'config.encoding ="utf-8"'有什么不同?

Lai*_*uan 27 ruby encoding ruby-on-rails

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

#encoding: utf-8
Run Code Online (Sandbox Code Playgroud)

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

config.encoding = "utf-8"
Run Code Online (Sandbox Code Playgroud)

他们不一样吗?如果我已经设定config.encoding = "utf-8",我还需要#encoding: utf-8吗?

Fro*_*ost 42

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

#encoding: utf-8 在ruby文件中告诉ruby这个文件包含非ascii字符.

这两种情况不同.第一个(in config/application.rb)告诉rails东西,并没有任何关于ruby本身应如何解释源文件.

您可以设置环境变量RUBYOPT=-Ku,如果你是懒惰的,并希望Ruby来自动设置的默认文件编码.rb文件utf-8,但我宁愿建议你把你的非ASCII位在翻译文件引用该I18n.t.

  • 实际上`#encoding:utf-8`告诉ruby*解释*文件的来源为`utf-8`,即使它不包含任何非ascii字符.;) (12认同)
  • 当使用2.0.0之前的ruby版本时,整个`#encoding:utf-8`业务只是一个问题.从2.0.0开始,ruby现在默认将源文件解释为utf-8. (7认同)