最近在用Qt编写一个小的项目,前几今天都好好的,数据库一点问题都没有,今天不知道怎么了,老是出现乱码,怎么改都不行,想了半天自己也没有改什么不该改的地方啊,纠结了一天,哎!自己昨天的程序还都能运行,没有出现错误,今天的程序就是不行了!貌似程序和自己过不去似得,就在刚才终于解决了这个问题,no!不能说是解决了,只是没有乱码而已,现在还不知道是出了什么问题导致的。我的数据库中部分代码是这样的:
/*创建数据里并链接*/ static bool createConnection() { QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); QSqlDatabase db; //创建一个数据库 if(QSqlDatabase::contains("qt_sql_default_connection")) { db = QSqlDatabase::database("qt_sql_default_connection"); } else { db = QSqlDatabase::addDatabase("QSQLITE"); } //db.setHostName("localhost"); db.setDatabaseName("SupSystem.db"); //设置数据库的名字 //db.setUserName("root"); //db.setPassword("123456"); if(!db.open()) { qCritical("Can't open database: %s(%s)", db.lastError().text().toLocal8Bit().data(), qt_error_string().toLocal8Bit().data()); return false; } QSqlQuery query; /***************************员 工 表 *****************************/ query.exec(QObject::tr("create table user(User_Id integer primary key AUTOINCREMENT," "User_Name vchar(100) ,User_Sex vchar(10)," "User_Age vchar(100),User_Pwd vchar(20))")); query.exec(QObject::tr("insert into user values (1000,'admin 超级管理员','男','20','lq')")); query.exec(QObject::tr("insert into user values (1001,'小张 管理员','女','22','1001')"));
//此处省略其他的……
}网上都说只要加了QObject::tr就行了,但是我的还是不行,不知道为什么,很是纠结。我在主函数里面也加了转码语句了:
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));//支持中文文件名显示结果是,依然乱码。
百度看了http://blog.csdn.net/brave_heart_lxl/article/details/7186631这位大神的文章,写的很好,可我的问题还没有解决。
如果你也遇到了相似的问题,可以一起交流。