最近在用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这位大神的文章,写的很好,可我的问题还没有解决。
如果你也遇到了相似的问题,可以一起交流。