我们正在运行最新版本的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删除这样的无效字符?或者这是我真正在我们的应用程序中防御的东西吗?