当我通过 SFTP 将我的 rails 应用程序上传到正在运行的生产服务器时,Ubuntu 10.04 LTS
我的文件中的所有西里尔字符如下所示:
http://dl.dropbox.com/u/347209/chars.png
如您所见,只有部分单词有误。因此 Rails 应用程序不会以语法错误启动。
我还遇到了类似的错误
ActionView::Template::Error (incompatible character encodings: ASCII-8BIT and UTF-8)
答案1
事实证明 ruby 1.9 从环境变量中获取默认的外部编码。在我的 Ubuntu 上,由于某种原因,$LANG
以下命令输出:US-ASCII
ruby -e 'puts Encoding.default_external.name'
因此我在文件末尾添加了以下行/etc/environment
:
LANG = "en_US.UTF-8"
之后我重新启动了服务器,一切正常。
如果您不想更改系统上的全局区域设置,您也可以在 .rb 文件的顶部添加“魔术注释”,以在需要时强制编码。
# coding: utf-8