mysql + c++builder +qt 這麼個環境,一段中文資訊從qt生成,寫入乙個ini檔案,cb讀出這個ini裡的文字,生成sql語句寫入mysql。
中間過程一切正常,最後的sql執行出錯,提示資訊裡說有無效字串,然後是一些亂碼。
雖然可以把這個欄位用binary()方式寫入讓sql正常執行,但這個欄位再讀出來的資料也不正確。
cb早期版本的內部字串ansistring和qt裡utf8字串本來就不是一路人,所以看見亂碼都沒往別的地方想,直覺就感覺這是兩個環境內碼不一致引起。
於是花了大半夜的時間各種排查,各種轉碼,直到天都亮了才想到是不是mysql的問題?
去掉中間環節直接把sql寫死執行一下,果然也出亂碼了。
開啟資料庫管理工具看一下,這個表的預設字符集是latin1,而資料庫裡其它表預設字集是utf8。
這是個因為需要增加功能最近新建立的表,也不知道我是在哪台機器上哪個環境裡隨便建立的,沒注意使用了那個環境裡預設的latin1字集。
表裡沒資料,於是刪除之後重新用正確字集建立一下,一切正常。
Mysql 編碼設定不正確,導致程式報錯
錯誤如下 caused by com.mysql.jdbc.mysqldatatruncation data truncation incorrect string value xe6 x80 xa5 xe7 x94 xa8.for column title at row 1原因編碼錯誤 改編碼,刪...
mysql字符集設定
show variables like char show variables like collation 2.修改編碼 set variable name value set character set connection utf8 3 顯示建立資料庫資訊 show create databa...
mysql 字符集設定
1.檢視mysql能夠支援的多種字符集 show character set 檢視mysql能夠支援的字符集的校對規則 show collation show collation like utf8 2.檢視當前字符集及校對 show variables like character set sho...