【问题标题】:Ruby on Rails - Generated Files' EncodingRuby on Rails - 生成文件的编码
【发布时间】:2010-11-11 12:07:33
【问题描述】:

我发现 RoR 在创建新应用程序时生成的所有文件似乎都使用西方(ISO-8859-1)编码保存(我在 Windows 机器上进行本地开发)。因此,我在使用某些特殊字符(例如 £)时遇到问题。

  • RoR 是否应该生成框架文件并使用西方 (ISO-8859-1) 编码保存它们?
  • 如果不是,我如何让 RoR 生成文件并使用 UTF-8 编码保存它们,从而避免某些字符出现问题,例如 £?

请参阅Ruby on Rails - £ sign troubles,了解我之前提出的与此问题相关的未解决问题。

【问题讨论】:

    标签: ruby-on-rails encoding utf-8 iso-8859-1


    【解决方案1】:

    Rails 在生成的文件中只使用 ASCII 字符。

    ASCII 文件既不是 UTF-8 也不是 ISO-8859-1。 ASCII 与两种编码兼容,但 ASCII 文件不会变成 ISO-8859-1 或 UTF-8 文件除非您向其添加特殊字符

    在添加 £ 字符后保存文件时,应确保将编辑器或 IDE 设置为使用 UTF-8 而不是 ISO-8859-1。您应该在编辑器中寻找配置选项。 Rails 对此无能为力。

    如果您运行 Ruby 1.9,还记得在包含特殊字符(模板除外)的文件顶部设置魔术注释。在 Ruby 1.8 及之前的版本中,此注释无效。

    # encoding: utf-8
    

    完全相同的问题会导致您在其他问题中描述的症状。

    有关一些背景,请参阅此(旧但出色)article about character encodings and Unicode

    【讨论】:

    • 但是为什么 RoR 框架文件是使用 ISO-8859-1 编码生成和保存的呢?我认为 RoR 中的默认编码是 UTF-8。
    • @freshest,RoR 将文件保存为 ISO-8859-1,它将它们保存为 ASCII。 ASCII 与 UTF-8 和 ISO-8859-1 兼容。如果您将特殊字符添加到 ASCII 文件中,则 that 是您应该指定正确编码的时刻。 Rails 不会在它生成的文件中添加特殊字符。因此,导致问题的是您的编辑器配置,而不是 Rails。
    • 此外,保存文件的编码与发送生成的 HTML 的编码是分开的。确保这也是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多