持久性UTF-8无效字节序列

时间:2014-04-08 23:38:20

标签: mysql ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

我们正在运行最新版本的Rails 3.2和mysql2 gem。最近我注意到我们的错误日志中有很多条目,都来自于视图:

ArgumentError: invalid byte sequence in UTF-8

事实证明,用户将\xED\xA0\xBC等字符持久保存到我们的数据库中,这导致视图中断。

我对此进行了大量研究,但尚未找到可靠的答案。他们似乎都从Rails应用程序方面解决了这个问题。我已经编写了一个Rack中间件来消除对这样的字符的POST和PUT请求,我很乐意与大家分享,但是我想知道这里是否有更深层次的问题,我没有解决。< / p>

我们所有的MySQL表都将其排序规则设置为utf8_general_ci。所以,我想知道,这些非法角色首先进入我们的数据库是怎么回事?有没有办法让MySQL删除这样的无效字符?或者这是我真正在我们的应用程序中防御的东西吗?

0 个答案:

没有答案