【问题标题】:ActionView::Template::Error (incompatible character encodings: ASCII-8BIT and UTF-8) with portuguese brazilian characters带有葡萄牙语巴西字符的 ActionView::Template::Error(不兼容的字符编码:ASCII-8BIT 和 UTF-8)
【发布时间】:2016-02-12 20:50:48
【问题描述】:

我正在尝试在具有 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

我的 application.rb 包含以下行:

config.encoding = "utf-8"

我的 environment.rb 包含以下行:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    此外,如果您只有一些编码错误的字符串,您可以尝试以下方法:

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

    这应该将其转换为 UTF。

    【讨论】:

    • 嗨,Dmitry,感谢您抽出宝贵时间帮助我!命令文件给了我这个: divulgue.html.erb: UTF-8 Unicode text force_encoding 也没有帮助我。当我返回代码 the_bad_string.encoding.name 时,它​​也给了我 UTF-8 !!!
    • 如果你的字符串来自divulgue.html.erb之外的某个地方,那么也要检查源文件的编码。例如。当我尝试在视图中使用env.rb 中定义的字符串时,我遇到了这样的问题。还要检查 the_bad_string.encoding 返回的内容,是 UTF 吗?。
    • 不,这是一个带有静态内容的静态页面,但带有 á ã ç 之类的字符。如果我删除这些字符,页面就会呈现良好。我正在使用 local_env.rb 文件中定义的字符串来定义页面标题,并且令人惊讶的是它们可以工作,即使其中包含 ú 字符????!!!???是的,string.encoding.name 返回 UTF-8。
    • 听起来很奇怪。尝试从文件中删除所有有问题的字符,确保它有效,然后只添加一个葡萄牙语字符串,直接在服务器上编辑文件,如果它不起作用,force_encoding("UTF-8") 也不起作用,但是来自外部文件的葡萄牙语字符串效果很好——考虑将它们全部移到 rails i18n .yml 文件中。
    • 我已经直接访问了我的 Puma 服务器(rails s puma binding=IPADDRESS),并且我尝试通过 NGINX 访问的同一页面运行良好!我现在完全迷路了!
    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2011-10-17
    • 2011-05-26
    相关资源
    最近更新 更多