★【求帮助】linux下Qtcreator编程输出mysql数据库查询的结果时中文乱码

willis_326 2012-07-27 12:46:15
我用的是ubuntu,
先上图说明:
我是使用navicat图形界面管理mysql数据库的,数据库连接编码设置为UTF-8了:



数据库project也设置为UTF-8了






数据库project中的表student也设置为UTF-8了


表的内容


Qt creator的编码也设置为UTF-8了


但是输出从数据库中查询到的中文内容字符的时候还是乱码


本人Qt初学者,用了三天时间,网上查了很多资料,用了很多办法都不行啊,实在没办法,
只好发贴问,哪位大牛可以告诉我啊,万分感谢啊!


附源代码:

1、exp1.pro

QT +=core gui sql
#TARGET =
#DEPENDPATH += .
#INCLUDEPATH += .
SOURCES += \
main.cpp


2、main.cpp

#include <QtCore/QCoreApplication>
#include <QtSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QString>

int main(int argc,char *argv[])
{


QCoreApplication a(argc,argv);

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);

QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("project");
db.setUserName("root");
db.setPassword("0");


if(db.open())
{
qDebug()<<"database is established!";
}
else
{
qDebug()<<"build error!";
return a.exec();
}
QSqlQuery query;
query.exec(QObject::tr("select * from student"));
QSqlRecord rec=query.record();
int count=rec.count();
qDebug()<<"Number of column:"<<count;

while(query.next())
{
rec=query.record();
int name=rec.indexOf("name");
int card=rec.indexOf("card");
int user=rec.indexOf("user");
int password=rec.indexOf("password");
int book =rec.indexOf("book");
QString value1 =query.value(name).toString();
QString value2 =query.value(card).toString();
QString value3 =query.value(user).toString();
QString value4 =query.value(password).toString();
QString value5 =query.value(book).toString();
qDebug()<<"name:"<<value1<<"\t"<<"card:"<<value2<<"\t"<<"user:"<<value3
<<"\t"<<"password:"<<value4<<"\t"<<"book:"<<"\t"<<value5;

}
query.clear();
db.close();
return a.exec();
}
...全文
700 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
willis_326 2012-08-13
  • 打赏
  • 举报
回复
我已经解决了,多谢楼上各位!
解决办法看这里,希望对其他遇到这个问题的人有帮助。
http://blog.csdn.net/stormwy/article/details/7853464
willis_326 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

Qt 我操作多的是Oracle数据库 我习惯是读取中文字符添上C/C++ code
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));//UTF-8 GBK
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCod……
[/Quote]

我试过用GBK,但也不行。GB2312也用过,也不行,我觉得可能是别的原因。在navicat上设置好编码后都能显示出中文来,但是经过Qt查询输入就不对了,其中肯定是有某个原因,但是我不知道是哪里有问题。

话说,关于Qt的版块很冷清啊,都没几个人好像。
tracybochen 2012-07-27
  • 打赏
  • 举报
回复
Qt 我操作多的是Oracle数据库 我习惯是读取中文字符添上
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));//UTF-8 GBK
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
刀刀亮 2012-07-27
  • 打赏
  • 举报
回复

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧