ActionView :: Template ::错误(不兼容的字符编码:ASCII-8BIT和UTF-8),带有葡萄牙语巴西字符

时间:2015-11-11 17:15:46

标签: ruby ruby-on-rails-4 nginx character-encoding puma

我正在尝试使用NGINX和PUMA在Ubuntu 14.02服务器上部署应用程序,当我尝试使用巴西葡萄牙语和不访问数据库的字符访问服务器上的静态页面时,页面未显示且页面未显示记录以下错误:

ActionView :: Template ::错误(不兼容的字符编码:ASCII-8BIT和UTF-8)

我阅读了很多有关此错误的帖子/答案并尝试了所有内容。

Ruby版本:ruby 2.1.3p242(2014-09-19修订版47630)[x86_64-linux] Rails版本:Rails 4.2.4

服务器中的命令区域设置返回以下内容:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

我的application.rb包含以下行:

config.encoding = "utf-8"

我的环境.rb包含以下几行:

Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

我已经将#encoding:“utf-8”放在我的html.erb文件之上,但没有成功。

1 个答案:

答案 0 :(得分:1)

检查有问题的源文件是否实际使用UTF-8编码(例如,Textmate允许使用各种编码保存文件)。检查文件是否实际被系统识别为UTF,运行file /path/to/something应返回UTF-8

此外,如果您只有一些编码错误的字符串,您可以尝试这样的事情:

the_bad_string.dup.force_encoding("UTF-8")

这应该转换为UTF。