1. 程式人生 > >Qt與MySQL互動出現亂碼

Qt與MySQL互動出現亂碼

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互動沒有亂碼了。
這裡,筆者認為自己在驅動原始檔中新增程式碼,然後通過編譯,這樣沒有作用。還是確認好問題所在。