上传到 Ubuntu 生产服务器后出现奇怪的西里尔字符行为

上传到 Ubuntu 生产服务器后出现奇怪的西里尔字符行为

当我通过 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 

相关内容