Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – ActionView :: Template :: Error(不兼容的字符编码:UTF-8和ASCII-8BIT)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用的是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编码.为了解决这个问题,@R_982_10673@下工作:

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

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

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – ActionView :: Template :: Error(不兼容的字符编码:UTF-8和ASCII-8BIT)全部内容,希望文章能够帮你解决ruby-on-rails – ActionView :: Template :: Error(不兼容的字符编码:UTF-8和ASCII-8BIT)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。