【发布时间】:2011-07-18 14:40:41
【问题描述】:
我想将 Rails 应用程序从 Ruby 1.8.7 移植到 1.9.2。有些文件在字符串和 cmets 中都包含 ä/ö/ü 等变音符号。 这些文件保存为 UTF-8,但开头没有BOM(字节顺序标记)。
您可能知道,Ruby 1.9 refuses to parse these files,提供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 专家,很难)。
【问题讨论】:
标签: encoding compilation ruby-1.9.2