找回密码
 立即注册
收起左侧

QT写入mysql中文失败(不是乱码,数据库毫无变化)

10
回复
8732
查看
[复制链接]
累计签到:5 天
连续签到:1 天
来源: 2017-6-26 20:46:09 显示全部楼层 |阅读模式
2Qter豆
本帖最后由 285049001 于 2017-6-26 21:28 编辑

qt  insert  中文写入数据库失败 ,改成英文写入成功
query.exec()里的insert语句 在sql 控制台可以正常执行
QCoreApplication a(argc, argv);  
    QSqlDatabase xx = QSqlDatabase::addDatabase("QMYSQL");   
    xx.setHostName("localhost");
    xx.setDatabaseName("stu");
    xx.setUserName("root");
    xx.setPassword("");
    if (!xx.open()) qDebug()<<"aa";  
    QSqlQuery query(xx);  
    query.exec("insert into abc(id  )  value ('啊啊啊')");







中文是可以输出的



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-6-26 21:14:12 显示全部楼层
lasterror 提示这个
incorrect string value :‘ \\xB0\\xA1\\xB0\\xA1\\xB0\\xA1’ for column ‘id’ at row 1 QMSQL : unable to execute query
是编码的问题吗
回复

使用道具 举报

尚未签到

2017-6-26 22:04:25 显示全部楼层
你试试在workbench 里面insert中文看看
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-6-27 08:55:02 显示全部楼层
Joey_Chan 发表于 2017-6-26 22:04
你试试在workbench 里面insert中文看看

额,我用的是SQLyog,在里面insert中文是可行的
试了下 workbench,也是可行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-6-27 09:06:28 显示全部楼层
本帖最后由 285049001 于 2017-6-27 09:11 编辑
Joey_Chan 发表于 2017-6-26 22:04
你试试在workbench 里面insert中文看看

通过百度lasterror的提示,修改了mysql的my.ini

[mysqld]

character-set-server=utf8mb4

[mysql]

default-character-set=utf8mb4

现在qt内insert中文不报错(lasterror输出为空),数据库里也有新纪录,但是中文哪里为空,英文正常(图为新插入的记录)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-6-27 09:45:09 显示全部楼层
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
加了句这个,应该算是解决了,写入中文正常了,,,,,,不过不理解原因
回复

使用道具 举报

累计签到:77 天
连续签到:1 天
2017-6-27 16:00:00 显示全部楼层
285049001 发表于 2017-6-27 09:45
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
加了句这个,应该算是解决了,写入中 ...

你的源代码文件,不是UTF-8的?
回复

使用道具 举报

尚未签到

2017-6-27 22:00:39 显示全部楼层
去了解一下什么是字符串编码吧,就知道为什么了

你应该只是遇到了国标和utf8的冲突而已
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-6-29 08:32:10 显示全部楼层
realfan 发表于 2017-6-27 16:00
你的源代码文件,不是UTF-8的?

文本编辑器默认编码 是utf8,,所以我才不能理解
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-6-29 08:34:15 显示全部楼层
Joey_Chan 发表于 2017-6-27 22:00
去了解一下什么是字符串编码吧,就知道为什么了

你应该只是遇到了国标和utf8的冲突而已 ...

嗯,好的,谢谢
回复

使用道具 举报

累计签到:38 天
连续签到:1 天
2017-7-11 09:55:33 显示全部楼层
你应该是用的MSVC吧,用这个就会有编码问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了