微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 错误’不兼容的字符编码:ASCII-8BIT和UTF-8’由于8位编码的cookie(Rails 3和Ruby 1.9)

我移动了一个使用1.8.7到1.9.2的网络应用程序,现在我不断获取
incompatible character encodings: ASCII-8BIT and UTF-8

我的数据库编码为UTF-8,我也有’config.encoding =“utf-8”’.

我看到了一些想法可能的解决方法,我补充说

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

但它也没有用.

我收到此错误一个特定代码块是

%ul.address
- @user.address.split(',').each do |line|
  %li= line.titleize

我正在使用HAML,我检查了line.titleize,编码是UTF-8.似乎模板是用ASCII-8BIT渲染的,每当我尝试渲染像’ñ’这样的字符时它就会被搞砸

我正在使用Rails 3.0.5.

我读过詹姆斯爱德华格雷的帖子,但我仍然可以弄明白发生了什么;(.

我真的很感激任何帮助:D.

我也尝试过:

"string".force_encoding("UTF-8")

# encoding: utf-8

没有运气.

固定

评论.

解决方法

我刚刚碰到了类似的东西……并且在这个问题的评论中发现了隐藏的修复,但认为值得明确强调:

cookie是ASCII-8BIT,但rails 3模板认为utf-8.这意味着在视图中使用原始cookie值可能会引发Encoding :: CompatibilityError(如果用户的cookie值不兼容)

修复(如Adolfo Builes所述)是将您的cookie值强制转换为UTF-8,如下所示:

cookies["location"].force_encoding('UTF-8')

原文地址:https://www.jb51.cc/ruby/270334.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐