• 4740阅读
  • 7回复

[提问]写进Mysql显示中文,读取出来后显示乱码,求高手!! [复制链接]

上一主题 下一主题
离线tyrantkemp
 
只看楼主 倒序阅读 楼主  发表于: 2013-01-10
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
已经重新编译了mysql驱动,通过sql语句创建表,写入中文数据,在mysql表中也正常显示中文,但是程序读出来后显示的是乱码,怎么搞啊~搞了大半天没搞明白~求高手指导啊·····

离线shiziyang

只看该作者 1楼 发表于: 2013-01-10
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
这些在main函数里加了吗?
不知道的话去google一下。
不用UTF-8用GBK什么的也可以
离线tyrantkemp
只看该作者 2楼 发表于: 2013-01-10
回 1楼(shiziyang) 的帖子
加了 用的是 gbk 我是参照这个帖子做的
http://www.iteye.com/topic/1126389

没有编译Mysql驱动之前只能写入mysql乱码 重新编译之后写入的是正常汉字 但是读出来仍然是乱码~ 求指导
离线hehuim

只看该作者 3楼 发表于: 2013-01-10
回 楼主(tyrantkemp) 的帖子
mysql中设置的编码和你程序中的一样吗?
离线tyrantkemp
只看该作者 4楼 发表于: 2013-01-10
回 3楼(hehuim) 的帖子

都是设置的gbk    mysql数据库属性也是GBK
离线roywillow

只看该作者 5楼 发表于: 2013-01-10
既然你能够得到mysql的编码,那你就用这个获得的codec手动将gbk转为unicode QString不可以么
那三行setCodecFor不知道作用的话还是少用的好
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线XChinux

只看该作者 6楼 发表于: 2013-01-10
你连接上mysql后,要执行一下
,比如

QSqlQuery q;
q.exec("set names 'utf8'");
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线tyrantkemp
只看该作者 7楼 发表于: 2013-01-10
回 5楼(roywillow) 的帖子
嗯 明天试试···thanks~
快速回复
限100 字节
 
上一个 下一个