在使用mysql5.7.14時,按照常規方法,使用qt5.8.0重新編譯mysql驅動之後,在使用的時候發現讀取的中文資料在使用tostring()轉換時,不能得到正確的結果。經查是qt的mysql的驅動**上做了mysql的版本判斷,對不同的版本使用了不同的編碼。解決方法如下:
x:\qt\qt5.8.0\5.8\src\qtbase\src\plugins\sqldrivers\mysql開啟其中的qslq_mysql.cpp,瀏覽到1423行左右。其內容如下:
#if (mysql_version_id >=
40113
&& mysql_version_id <
50000) || mysql_version_id >=
50007
if (mysql_get_client_version() >=
50503
&& mysql_get_server_version(d->mysql) >=
50503) else
#endif
其中語句mysql_set_character_set(d->mysql, 「utf8mb4」);更改了特定版本的mysql使用的字符集。把utf8mb4改為utf8,即可正常讀取、轉換字串。 Qt編譯MySql驅動
我使用的環境是 vs2010 qt4.8.5 mysql5.6 首先,通過qt 4.8.5 command prompt進入qtdir src plugins sqldriver mysql目錄之下。而mysql預設安裝目錄是有空格的 program files mysql makefile無法準確...
Qt5 8 0遇到的乙個中文亂碼問題
維護公司 時看到乙個工具出現了如下的亂碼 於是開始檢查 藉此機會理了一遍char qstring gb18030 utf8之間的關係。這裡出現亂碼的原因是 由sdk介面得到乙個包含中文的char字串 char byname name len 這個字串儲存的中文為gb18030格式儲存,對於qt5.8...
編譯QT的mysql驅動
1.安裝mysql的時候一定要安裝 libs include files 的開發者模組 2.設定環境變數 path systemroot system32 systemroot systemroot system32 wbem c program files microsoft sql server...