【发布时间】:2012-03-05 18:57:57
【问题描述】:
我正在使用带有 pg 0.13.2 和 haml 3.1.4 的 postgres 在 rails 3.2.1 上。 DB编码是“unicode”,我很确定它与postgres的“UTF-8”相同 元标记具有 charset=utf-8 (在表单页面和显示页面上)并且表单具有 accept-charset="UTF-8"
我在我的生产环境(Heroku cedar)中遇到“不兼容的字符编码:ASCII-8BIT 和 UTF-8”错误,到目前为止我已经尝试了很多修复,但并不真正了解发生了什么.开发环境不会导致问题。
导致问题的字符串有一个从 Word 复制/粘贴的撇号。如果我删除该字符,一切都会呈现正常,但这是用户提交的内容,所以它肯定会在未来再次中断。
从 Heroku 控制台,调用 string.encoding.name 返回“UTF-8”,在视图中使用 force_encoding("UTF-8") 没有区别。
但是,如果我在字符串上使用 haml 过滤器(如 :markdown),则一切都很好。 此外,将视图更改为 erb 可以解决问题。
有什么想法吗?在任何地方都使用过滤器并不可行,我想深入了解一下。
【问题讨论】:
-
字符在数据库中还是在HAML模板中?
标签: ruby-on-rails ruby ruby-on-rails-3 character-encoding haml