qt5.8.0 mingw 操作mysql5.6.24 插入中文乱码解决方案
qt5.8.0 mingw 操作mysql5.6.24 插入中文乱码解决方案
1.环境
系统:win10
qt:qt5.8.0 mingw
mysql:mysql5.6.24免安装版本
2.描述
使用qt写了个简单的数据库操作,在插入中文的时候发现是乱码,乱码的形式是这样的:???。随后就开始在网上找各种解决方案,然而并没有解决。当然,在这个过程中也对mysql数据库有了更深的认识。网上说的改这样改那样,都没啥用。因为本身你数据库没错,错的在于你插入的数据,也就是在qt插入代码那里。
3.问题解决方案
(1).首先排除mysql数据库的问题,查看你数据库的编码格式,是不是都是utf8
我这边数据库的编码格式utf8,但是插入还是不行,问题出在哪里?这个我在找答案的时候好像没找到,然后特别迷茫。后来我突然看到了数据表的建表语句。因为我在建表的时候只对数据库的字符集进行了设置,校对规则没有设置,但是我看到的我表里的建表sql的校对规则是utf8_bin
我操作的目标数据库下表的建表sql,如图:
为啥这里是utf8_bin,我在建库的时候没有选择,就默认位utf8_bin了,那会不会跟这个有关系呢?于是我就把之前以QString插入的内容改成了QByteArray。然后插入就正常了。如图
qt里的代码
4.解决过程中遇到的一些坑
1.在插入的时候,如果你在你QString字符串的后面进行toUtf8()的操作,你插入到mysql数据库的中文会显示正常,但是在提取到qt时,会显示乱码
2.很多博客写的情况可能只是适合作者本人的环境,对于你的情况的匹配度不是很高。所以要多思考,多想为什么。
5.测试