加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – ActionView :: Template :: Error(不兼容的字

发布时间:2020-12-16 20:31:06 所属栏目:百科 来源:网络整理
导读:我使用的是Ruby 1.9.2,Rails 3.0.4 / 3.0.5和Phusion Passenger 3.0.3 / 3.0.4.我的模板是用HAML编写的,我使用的是MySQL2 gem.我有一个控制器操作,当传递一个具有特殊字符的参数,像一个变音器,给我以下错误: ActionView::Template::Error (incompatible cha
我使用的是Ruby 1.9.2,Rails 3.0.4 / 3.0.5和Phusion Passenger 3.0.3 / 3.0.4.我的模板是用HAML编写的,我使用的是MySQL2 gem.我有一个控制器操作,当传递一个具有特殊字符的参数,像一个变音器,给我以下错误:
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)

错误指向我的HAML模板的第一行,其中包含以下代码:

<!DOCTYPE html>

我的理解是,这是因为我有一个UTF-8字符串连接与ASCII-8BIT字符串,但我不能为我的生活找出什么ASCII-8BIT字符串.我已经检查了操作中的参数是使用UTF-8编码的,我已经在HAML模板和ruby文件的顶部添加了一个编码:UTF-8声明,我仍然收到这个错误.我的application.rb文件中也有一个config.encoding =“UTF-8”声明,以下所有结果都在UTF-8中:

ENV['LANG']
__ENCODING__
Encoding.default_internal
Encoding.default_external

这是踢球者:我无法在我的Mac-OSX上使用独立的乘客或杂种在开发或生产中复制此结果.我只能在运行Linux上的nginx乘客的生产服务器上复制它.我已经在生产服务器的控制台中验证了后者所提到的命令都是UTF-8.

您是否遇到过同样的错误,您是如何解决的?

解决方法

在进行一些调试后,我发现使用ActionDispatch :: Request对象发生的问题,该对象恰好具有ASCII-8BIT中编码的字符串,而不管我的应用程序是否以UTF-8编码.我不知道为什么只有在Linux上使用生产服务器时才会发生这种情况,但是由于我无法在本地重现此错误,我将会假定它在Ruby或Rails中有些怪异.这个错误是由于像这样的一行:
@current_path = request.env['PATH_INFO']

当此实例变量打印在HAML模板中时,会导致错误,因为字符串以ASCII-8BIT而不是UTF-8编码.为了解决这个问题,我做了以下工作:

@current_path = request.env['PATH_INFO'].dup.force_encoding(Encoding::UTF_8)

哪个强制@current_path使用被强制进入正确的UTF-8编码的重复字符串.此错误也可能与其他请求相关的数据(如request.headers)发生.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读