Mal*_*lte 15 encoding compilation ruby-1.9.2
我想将一个rails应用程序从Ruby 1.8.7移植到1.9.2.有些文件在字符串和注释中包含ä/ö/ü等元音符.文件保存为UTF-8,但开头没有BOM(字节顺序标记).
您可能知道,Ruby 1.9拒绝解析这些文件,给出了一个invalid multibyte char (US-ASCII)
我在谷歌搜索和阅读很多,但唯一的解决方案似乎是
# 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专家,很难).
Mal*_*lte 30
我找到了一种解决方法:
设置RUBYOPT
环境变量,例如通过执行
export RUBYOPT=-Ku
在你的shell中.
这将在调用ruby时设置-Ku als默认选项.您现在可以调用所有其他调用ruby的工具而无需担心参数.rails server
或rake
工作并将所有文件视为UTF-8.无需BOM或魔术评论!
归档时间: |
|
查看次数: |
7511 次 |
最近记录: |