Qt中操作sqlite使用中文出现乱码问题的解决

在Qt中使用sqlite出输入中文出现乱码问题的解决方法

在Qt中操作sqlite数据库的时候输入中文的时候容易出现乱码,而将数据库的类型换成mysql就不会出现类似的问题。可以使用以下的方法改写Qt中sqlite写法。

1.出现类似错误的语法

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("localhost");              		//出现乱码
db.setDatabaseName("data.db");
db.setUserName("ohuohuoo");
db.setPassword("123456");
if (!db.open()) {
    //若不能打开,则提示出错
    QMessageBox::critical(0, "Cannot open database1",
                              "Unable to establish a database connection.", QMessageBox::Cancel);
	return false;
}

将上面使用sqlite的语法改写一下

2.改写后的语句

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("my.db");                    //使用正确
if (!db.open()) {
    //若不能打开,则提示出错
	QMessageBox::critical(0, "Cannot open database1",
                              "Unable to establish a database connection.", QMessageBox::Cancel);
	return false;
    }

3.其他解决方法

在查阅其他博文的时候,发现也有人提供了不一样的解决方法,就是将编码格式设置为UTF-8格式,但博主这里使用后没能成功解决问题,可能是我使用方法的原因,具体方法如下

//在main函数中,于创建调用数据库前添加
#include <QTextCodec>

//将编码格式设置为utf-8。必须在数据库调用和窗口页面显示前执行代码
QTextCodec * codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);


发布了43 篇原创文章 · 获赞 7 · 访问量 9034

猜你喜欢

转载自blog.csdn.net/qq_41488943/article/details/103507750