事情有点搞笑。。。我和后端搭档一起开发文章评论这个小功能。在开发过程中,我一直提交字母和数字的评论内容,从来没有用中文字符提交过。直到这个评论小功能基本上做完了,我偶然的用中文提交评论,居然,表单提交失败,报500的错!然而,在搭档的本地测试可以提交中文评论。。奇了怪了。于是我开始打断点检查代码。后端搭档找不出他的原因,我这边js压根没问题。。。然后,我突然想到字符集的问题。是不是mysql数据库服务器或者数据库字符集问题!开始搜命令,敲命令。
---------------------------------------------------------------------------------------
先说一下我的开发环境,OS X EI Capitan 10.11.4 | MySQL 5.5.47
---------------------------------------------------------------------------------------
首先,查看mysql数据库服务器的字符集,看下面的结果,latin1很有可能是问题所在。于是我开始用set character命令修改,但这并没有什么卵用。因为我项目运行的数据库是早已经创建好的,除非我删除了该数据库,在set character utf-8之后再重新创建数据库,重新导入数据。这样做有点麻烦呢,但是咱不能嫌麻烦。我就设置字符集,然后我重新启动mysql服务器。问题来了,我重新启动之后,刚才设置的字符集由变成了如图所示的样子,拉丁文又跑出来了。气死宝宝了。宣告此方法无效。
然后我和搭档就在想,为啥修改mysql字符集之后又变成拉丁文了呢?难道要去my.cnf文件里去修改?说干就干。然而,还是没有什么卵用。。。这到底是为什么呢?就在我绞尽脑汁时,我突然想到数据表也有字符集。 果不其然,文章内容这个字段是拉丁文!!!
当我用这个alter table core_article_remark convert to character set utf8;命令修改了content这个属性的字符集之后,居然,居然,居然,能,提交中文字符了! !!我的内心真是无比的激动。
------------
希望这篇文章能够帮助到相似问题的人。
收工,碎觉。