成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解QT 中連接Mysql 亂碼解決方法

移動開發(fā)
本文介紹的是詳解QT 中連接Mysql 亂碼解決方法,對于亂碼的解決方法一般就是編碼出錯,先來看本文內(nèi)容。

QT 中連接Mysql 亂碼解決方法是本文介紹的內(nèi)容,QT連接mysql之后出現(xiàn)亂碼,MySQL4.1及其以上版本中中文問題比較麻煩,有時候在QT中使用會出現(xiàn)問號或者亂碼,現(xiàn)在說明一下在Qt中如何正確地配合使用。

先在MySQL中建表,使用中文,一般情況下就兩種,GB(GB2312或者GBK)或者UTF8兩種。兩種的解決方法是相似的,這里我們以GBK為例說明。

一、數(shù)據(jù)庫和表以及表里的字符相關(guān)字段(varchar, char, text等)都要使用gbk_chinese_ci這種方式,不這樣做也可以,但這樣做,會省很多麻煩。

二、重新編譯Qt的MySQL驅(qū)動,需要修改src/sql/drivers/mysql/qsql_mysql.cpp文件。要修改的部分如下:***百零八行的codec函數(shù),注意紅色加粗部分,是我修改增加的語句。

  1. tatic QTextCodec* codec(MYSQL* mysql)   
  2. {   
  3. return QTextCodec::codecForName("GBK");   
  4. #if MYSQL_VERSION_ID >= 32321   
  5. QTextCodec* heuristicCodec = QTextCodec::codecForName(mysql_character_set_name(mysql));   
  6. if (heuristicCodec)   
  7. return heuristicCodec;   
  8. #endif   
  9. return QTextCodec::codecForLocale();   
  10. }  

然后,重新編譯qt的mysql驅(qū)動,這里就不多說了,請查看Qt相關(guān)文檔

三、在Qt程序main函數(shù)中app后面開頭處加入下面兩句,加上這兩個是省得不必要的麻煩。

  1. QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));   
  2. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));   
  3. //QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));  

四、在Qt數(shù)據(jù)庫連接后,運(yùn)行SET NAMES 'GBK'語句(紅色部分)。

  1. db = QSqlDatabase::addDatabase("QMYSQL");   
  2. db.setHostName("localhost");   
  3. db.setDatabaseName("yourdatabase");   
  4. db.setUserName("yourusername");   
  5. db.setPassword("yourpassword");   
  6. db.open();   
  7. db.exec("SET NAMES 'GBK'");  

OK, 走過上面四步以后,我們就可以在程序中正確使用查看MySQL中的中文數(shù)據(jù)了。

但是如果你要直接通過SQL語句修改數(shù)據(jù),則需要正確的把輸入的內(nèi)容轉(zhuǎn)變?yōu)镚B碼中,比如:

  1. QTextCodec *codec = QTextCodec::codecForName("GBK");   
  2. QString strOut = codec->fromUnicode(lineEdit->text()).data();   
  3. QString strSql = "UPDATE user SET uinfo = '" + strOut + "'";   
  4. db.exec(strSql);  

值得注意的是,如果在第三步中把第三行的codecForTr的注釋去掉,則就不用上面的字符串格式轉(zhuǎn)換了。

這里面最關(guān)鍵的一點(diǎn)就是修改qsql_mysql.cpp文件,因?yàn)樗荒苷_的設(shè)置codec內(nèi)碼。

如果數(shù)據(jù)庫中的編碼使用的是UTF8,則把上面相關(guān)的部分改為UTF-8(Qt)或者UTF8(MySQL)就行了。

小結(jié):關(guān)于詳解QT 中連接Mysql 亂碼解決方法的內(nèi)容介紹完了,更多Mysql的內(nèi)容,請參考編輯推薦,***希望本文對你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-10-13 17:22:12

MySQL查詢亂碼

2009-07-02 13:32:56

JSP中文亂碼

2010-07-15 14:01:12

telnet亂碼

2009-07-01 18:14:36

JSP亂碼

2010-02-26 15:53:35

WCF套接字連接中斷

2011-07-04 10:09:19

Qt Creator BUG

2011-06-24 10:54:34

Qt Mysql

2010-11-23 10:11:23

mysql建表亂碼

2011-03-01 15:38:44

Fireftp亂碼

2009-06-25 15:06:20

Javadoc亂碼

2017-06-14 22:11:57

數(shù)據(jù)庫MySQL死鎖

2011-03-18 18:47:34

QtMySQL

2009-12-02 16:53:25

PHP發(fā)送郵件亂碼

2009-11-26 15:42:18

PHP函數(shù)mail()

2009-12-02 10:08:33

PHP mail()函

2012-03-21 10:16:31

JavaJSP

2010-08-12 09:30:08

Flex內(nèi)存泄露

2010-02-24 16:30:52

WCF常見錯誤

2010-11-16 16:07:32

oracle用戶連接

2010-10-19 10:25:29

SQL Server連
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲色图网址 | 在线观看国产wwwa级羞羞视频 | 免费一区 | 九九热在线观看视频 | 97精品国产97久久久久久免费 | 中日韩欧美一级片 | 成人精品一区亚洲午夜久久久 | 久国产精品| 天天久久| 精品国产精品三级精品av网址 | 久久高清免费视频 | 国产在线观看一区二区 | 欧美视频区| 亚洲激情在线观看 | 国产精品久久久久久模特 | 成人在线电影在线观看 | 超碰3| 人人草人人干 | 97成人免费 | 国产98在线 | 免费, | 国产欧美精品一区二区三区 | 亚洲综合色丁香婷婷六月图片 | 精品久久久久久久 | 中文字幕国产精品 | 91精品国产综合久久久久 | 国产在线视频99 | 狠狠干影院 | 全免一级毛片 | 日本三级全黄三级a | 亚洲人在线播放 | 男人天堂网址 | 一级毛片视频在线 | 日韩精彩视频 | 欧美日韩在线观看视频 | 色噜噜亚洲男人的天堂 | 亚洲一区二区高清 | 欧美日韩综合一区 | 久久精品久久综合 | 91视视频在线观看入口直接观看 | 日本三级网站在线观看 | 免费黄色的视频 |