我想将一个 Rails 应用程序从 Ruby 1.8.7 移植到 1.9.2。一些文件在字符串和注释中都包含像 ä/ö/ü 这样的变音符号。这些文件保存为 UTF-8,但开头没有BOM (字节顺序标记)。
你可能知道,Ruby 1.9 拒绝解析这些文件,给出一个invalid multibyte char (US-ASCII)
我在谷歌上搜索并阅读了很多,但唯一的解决方案似乎是
- 插入 BOM 或
- 插入
# coding: utf-8
在每个文件的开头。
我选择的编辑器 (gEdit) 似乎没有插入 BOM。我还读到拥有 BOM 是不好的做法,因为它可能会破坏某些编辑器,如果您想使用 shebang 表示法,它也会破坏 shell 脚本。
编辑:BOM 破坏了 Ruby 1.8.7 解析器,syntax error, unexpected kEND, expecting $end (SyntaxError)
为文件提供了一个!
我尝试使用 ruby -Eutf-8:utf-8 强制外部编码,但这似乎在调用 rake 时被忽略(我试过:/home/malte/.rvm/gems/ruby-1.9.2-p180/bin/rake测试)。
所以我的问题是:
由于 RVM 无论如何都从源代码构建 ruby 1.9,是否有构建选项或补丁可以将默认编码从 US-ASCII 更改为 UTF-8?
我快速查看了源代码,但找不到设置默认值的行(我不是 C 专家,很难)。