Linux與Windows下QT中使用MySQL中文亂碼解決方法 |
| 發(fā)布時(shí)間: 2012/8/21 16:51:57 |
|
Linux下 這種方法應(yīng)該是最快捷解決中文亂碼的辦法了,不用改mysql的編碼,僅限于linux下使用: 1.在QT程序的main.cpp的main函數(shù)中QTextCodec```那三句: 1.int main(int argc, char *argv[]) 以上兩步就解決問(wèn)題了。 Windows下 此方法修改后可以在QT中正常顯示中文,也可以通過(guò)QT往MYSQL中插入中文并在QT的控件上顯示出來(lái)。 但通過(guò)命令行查看表的內(nèi)容時(shí),中文直接顯示為?。 所以這個(gè)辦法做了之后就不能在命令行下查看mysql中文內(nèi)容。 第一步把數(shù)據(jù)庫(kù)的編碼全部改了很重要。 在Qt4中使用MySQL4.1及其以上版本中的中文問(wèn)題解決方法 MySQL4.1及其以上版本中中文問(wèn)題比較麻煩,有時(shí)候在QT中使用會(huì)出現(xiàn)問(wèn)號(hào)或者亂碼,現(xiàn)在說(shuō)明一下在Qt中如何正確地配合使用。 先在MySQL中建表,使用中文,一般情況下就兩種,GB(GB2312或者GBK)或者UTF8兩種。兩種的解決方法是相似的,這里我們以GBK為例說(shuō)明。 一、數(shù)據(jù)庫(kù)和表以及表里的字符相關(guān)字段(varchar, char, text等)都要使用gbk_chinese_ci這種方式,不這樣做也可以,但這樣做,會(huì)省很多麻煩( 設(shè)置方法參考《MySQL統(tǒng)一編碼》:http://www.linuxidc.com/Linux/2011-05/35405.htm)。
Quote: static QTextCodec* codec(MYSQL* mysql)
然后,重新編譯qt的mysql驅(qū)動(dòng),這里就不多說(shuō)了,請(qǐng)查看Qt相關(guān)文檔 Quote: QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
Quote: db = QSqlDatabase::addDatabase("QMYSQL");
Quote: QTextCodec *codec = QTextCodec::codecForName("GBK");
這里面最關(guān)鍵的一點(diǎn)就是修改qsql_mysql.cpp文件,因?yàn)樗荒苷_的設(shè)置codec內(nèi)碼。 如果數(shù)據(jù)庫(kù)中的編碼使用的是UTF8,則把上面相關(guān)的部分改為UTF-8(Qt)或者UTF8(MySQL)就行了。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |
京公網(wǎng)安備41019702002023號(hào)