Qt與MySQL互動出現亂碼
阿新 • • 發佈:2019-02-08
The gibberish of interaction Qt and mysql
定位問題
出現亂碼問題,首先確保Qt和mysql兩邊編碼方式一樣,全部改為UTF-8.
這裡檢視mysql端編碼的方式。至於如何修改mysql字符集,請看“MySQL使用之修改字符集”。
注意:大部分人一般通過mysql管理軟體來查看錶中資料(例如:navicat)。如果navicat端的編碼方式和mysql的編碼方式不一樣也會造成亂碼。首先先明確是navicat與mysql的編碼方式是不是一樣。
通過命令列檢視儲存資料是否為亂碼
navicat端確認字符集
確認兩者一樣才開始調整Qt和MySQL端的中文字亂碼。
這樣已經保證了資料儲存沒有問題。
注意:很多人直接通過navicat插入資料,但是navicat和mysql字符集不一樣,在navicat看到的中文,但是通過命令列檢視中文就亂碼了。
如果以上都調整好了,那麼試著向資料庫插入一些中文資料看是否有亂碼。若有,那麼證明Qt和MySQL之間是有問題的。
因為這個問題大多數人都遇到過,自己也試過自己重新編譯mysql驅動。
也試著在程式碼中新增,
// 設定編碼格式 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); //Set Character-Set db.exec("set NAMES UTF8");
在這些都做完了情況下,終於能夠保證Qt和MySQL互動沒有亂碼了。
這裡,筆者認為自己在驅動原始檔中新增程式碼,然後通過編譯,這樣沒有作用。還是確認好問題所在。