mysql 与qt 中文_【总结】Qt+Mysql5.5中文乱码解决 - MySQL Qt 中文乱码 mysql驱动 数据库乱码 - ITeye...

前段时间开发数据库几个模块一直预留着一个数据库内和程序界面上中文乱码的问题未解决,以前做asp.net、JSP,J2EE、C#时候知道,数据库中文乱码一般都是编码问题导致的,问题不大,只需要数据库客户端和服务端的编码一直就可以了。

项目的开发环境是VS2008+Qt4.7+Win7数据库管理软件为Navicate 8 for Mysql。

出现的问题如下,界面中读取数据库中文数据乱码:

1eeb117eca3ac5b7112c2faf4a6be25b.png

真正的解决过程如下:

1、数据库、数据表、数据项编码全部更改为GB2312/GBK

2、修改Qt驱动代码,重新编译Qt

Mysql5.5驱动,实现更改QtextCode

3、修改项目全局编码格式。

//以下部分解决中文乱码

QTextCodec *codec = QTextCodec::codecForName("GBK");

QTextCodec::setCodecForTr(codec);

QTextCodec::setCodecForLocale(codec);

QTextCodec::setCodecForCStrings(codec);

//以上部分解决中文乱码

步骤1数据库、数据表、数据项编码全部更改为GB2312/GBK截图

b78cb56231408487b005327c83a4cd77.png

步骤2修改Qt驱动代码,重新编译Qt Mysql5.5驱动,实现更改QtextCode截图:

b8eaccaf3d359481b61f5c6a38ffaf2e.png

最终结果成功如下:

Navicate中的数据:

4e43828ffd65dab32e0d3bcc0af1d7a7.png

程序界面中的数据截图:

c1a836f5609115a2c799f1fed90c7ee9.png

注意:

注①、貌似在Qt连接数据库的时候修改编码,并没有多大作用。

/**

*函数介绍:创建数据库连接

*输入参数:

*返回值:无

*/

bool

DataAccess::createConnection()

{

QSqlDatabase db =

QSqlDatabase::addDatabase("QMYSQL");

db.setHostName("10.3.2.84");   //数据库服务器

db.setDatabaseName("petct");   //数据库名

db.setUserName("admin");       //登录名

db.setPassword("admin");       //密码

if(!db.open ())

{

QMessageBox::warning (0,

"Warning", "Failed to open database!");

return false;

}

//不用设置

//db.exec("SET NAMES 'GBK'");

//

return true;

}

注②、貌似在第二步中重新编译Qt-mysql的驱动也没多大用。至少我后期反复试验后只进行了上述两步就解决了乱码问题。我在另外一个笔记本上也专门测试过增删改查,中文一切正常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值