Qt 解决MySQL 中文乱码问题
生活随笔
收集整理的這篇文章主要介紹了
Qt 解决MySQL 中文乱码问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- Qt 解決MySQL 中文亂碼問題
- 解決此問題的必要前提就是:
- 1、版本要匹配。
- 2、數據庫連接正常,需要重新編譯Qt 自帶的源程序中的mysql.pro 工程項目:
- 3、數據庫的編碼格式與Qt的編碼統一、
Qt 解決MySQL 中文亂碼問題
折騰了一天,整整一天,終于把該問題解決了。現在整理如下:
Qt 連接MySQL后,可能會遇到與MySQL交互過程中出現中文亂碼的問題。
解決此問題的必要前提就是:
1、版本要匹配。
2、數據庫連接正常。
3、數據庫的編碼格式與Qt的編碼統一、
1、版本要匹配。
Qt for windows 的版本,一般都是32 位
下載的MySQL版本也必須是32位版本。
Qt 的編譯器選擇也需要是32 位的 。如:
2、數據庫連接正常,需要重新編譯Qt 自帶的源程序中的mysql.pro 工程項目:
下載https://downloads.mysql.com/archives/c-c/下載MySQL Connector C 6.1, 因為筆者的使用的是MySQL5.5.15 版本的,這里需要MySQL Connector C 6.1
修改mysql.pro 文件如下:
TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin include(../qsqldriverbase.pri)LIBS += "C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib\libmysql.lib" INCLUDEPATH +="C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include"構建, 然后在c:\plugins\目錄下會產生如下的文件:
將qsqlmysql.dll 復制到 Qt 的安裝目錄下mingw73_32\plugins\sqldrivers 如下
編寫測試用例:
#include <QApplication> #include <QMessageBox> #include <QSqlError> #include <QTextCodec> #include <QDebug> #include <QSqlDatabase> #include <QSqlQuery> bool creatConnect();int main(int argc, char *argv[]) {QApplication a(argc, argv);//QTextCodec *codec = QTextCodec::codecForName("UTF-8");//QTextCodec::setCodecForLocale(codec);if(!creatConnect()){// return 1;}qDebug() << "Available drivers:";QStringList drivers = QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug() << "\t "<< driver;qDebug() << "End";QSqlQuery query;QString sql = "select * from test1;";qDebug() << sql;query.exec(sql);while(query.next()){qDebug()<<query.value(0).toString()<<query.value(1).toString();}return a.exec(); }bool creatConnect() {QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("127.0.0.1");db.setPort(3307);db.setDatabaseName("test");db.setUserName("root");db.setPassword("123456");bool ok = db.open();//建立數據庫連接if(!ok){QMessageBox::critical(0,QObject::tr("連接數據庫失敗!!!"),db.lastError().text());return false;}else{QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("連接數據庫成功!!!"));return true;} }注意,數據庫的名稱、端口號、登錄名和密碼都要正確。
ok, 這樣就可以連接上數據庫了。
3、數據庫的編碼格式與Qt的編碼統一、
通過SHOW VARIABLES LIKE ‘character%’;命令查看數據庫的編碼格式:
請確認是否為utf-8 格式。
Qt的編碼格式:
ok, 此時Qt與MySQL 的交互就可以正常顯示中文了。
總結
以上是生活随笔為你收集整理的Qt 解决MySQL 中文乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt5.15 连接MySQL数据库的实现
- 下一篇: QTreeWidgetItem 类的翻译