我正在使用 Rails 3.2.3 和 Ruby 1.9.3。我有一个名为 Post 的模型,它接受标题和描述。站点前端通过ajax请求接收通过后端提交的信息。当我填写表格时,让我们说
title: foo
content: foobar
并提交它,我可以毫无问题地通过前端查看数据。
但是,每当我通过表单提交非 utf8 数据时,例如(注意花哨的引号):
title: foo
content: “foobar”
当我尝试呈现表单时,出现以下错误:
ActionView::Template::Error (incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string))
我的 .js.erb 文件如下所示:
$("#my_post").html('<%= escape_javascript(render :partial => 'post') %>');
我意识到这是编码的问题,但我不确定我应该如何以最好的方式处理它。我想到了几个选择:
- 使用 iconv 库去除非 utf8 - 通过 before_save 过滤器为我的应用程序中的每个模型执行此操作
- 在 js 的顶部指定文档包含 utf-8(不确定这是否可行)
- 在我的表单中使用
accept-charset="UTF-8"
强制浏览器避免提交非 utf-8 内容。
我什至不确定这些解决方案是否会有所帮助,而最有效的方法是。谢谢!