Ado*_*les 8 ruby haml ruby-on-rails ruby-on-rails-3 ruby-1.9
我移动了一个使用1.8.7到1.9.2的网络应用程序,现在我不断获取
incompatible character encodings: ASCII-8BIT and UTF-8
Run Code Online (Sandbox Code Playgroud)
我的数据库编码为UTF-8,我也有'config.encoding ="utf-8"'.
我看到一些想法可能的解决方法,我补充说
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
Run Code Online (Sandbox Code Playgroud)
但它也没有用.
我收到此错误的一个特定代码块是
%ul.address
- @user.address.split(',').each do |line|
%li= line.titleize
Run Code Online (Sandbox Code Playgroud)
我正在使用HAML,我检查了line.titleize,编码是UTF-8.似乎模板是用ASCII-8BIT渲染的,每当我尝试渲染像'ñ'这样的字符时它就会被搞砸
我正在使用Rails 3.0.5.
我读过詹姆斯爱德华格雷的帖子,但我仍然可以弄明白发生了什么;(.
我真的很感激任何帮助:D.
我也尝试过:
"string".force_encoding("UTF-8")
Run Code Online (Sandbox Code Playgroud)
和
# encoding: utf-8
Run Code Online (Sandbox Code Playgroud)
没有运气.
固定
看评论.
我刚刚碰到了类似的东西......并且在这个问题的评论中发现了隐藏的修复,但认为值得明确强调:
cookie是ASCII-8BIT,但rails 3模板默认为utf-8.这意味着在视图中使用原始cookie值可能会引发Encoding :: CompatibilityError(如果用户的cookie值不兼容)
修复(如Adolfo Builes所述)是将您的cookie值强制转换为UTF-8,如下所示:
cookies["location"].force_encoding('UTF-8')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11543 次 |
| 最近记录: |