Qt5.8.0 mingw 操作mysql5.6.24 插入中文乱码解决方案

#qt5.8.0 mingw 操作mysql5.6.24 插入中文乱码解决方案

重要提示/

下面说的可以实现效果,但是太麻烦了…
只需要在程序里添加 一行代码即可
QSqlDatabase db;
/在win下中文不乱码
db.exec(“SET NAMES ‘GBK’”);
1.mysql数据库为免安装版本

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

4.解决过程中遇到的一些坑
1.在插入的时候,如果你在你QString字符串的后面进行toUtf8()的操作,你插入到mysql数据库的中文会显示正常,但是在提取到qt时,会显示乱码
2.很多博客写的情况可能只是适合作者本人的环境,对于你的情况的匹配度不是很高。所以要多思考,多想为什么。

5.测试
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值