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



我正试图在带有NGINX和PUMA的Ubuntu 14.02服务器上部署一个应用程序,当我试图访问服务器上带有巴西葡萄牙语字符的静态页面时,该页面不会显示,并记录以下错误:

ActionView::Template::Error(不兼容的字符编码: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

我的应用程序.rb包含以下行:

config.encoding = "utf-8"

My environment.rb包含以下行:

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

我已经把#编码:"utf-8"放在了我的html.erb文件上,但没有成功。

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

此外,如果你只有几个编码不好的字符串,你可以尝试这样的方法:

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

这应该将它转换为UTF。

最新更新