MySQL插入顯示漢字出現亂碼問題的解決

 

前段時間使用vc+mysql做東西,中途發現一插入漢字的話就出現亂碼,網上找了很多資料,像在連接字符串的地方設置字符集,發現都沒有解決問題,後來研究了一下mysql字符集的結構,終於解決問題。

MySQL服務端不加任何參數啓動時,如下面所示(下面中同樣顯示了我的mysql版本):

 

 

 

我的字符集配置中character_set_database和character_set_server爲utf8,這是由於我本身的Mysql配置文件my.ini中設置的爲utf8的原因造成的:

 

 

 

 


此時,可以發現,寫入的數據是亂碼(我這個裏面顯示爲空,但數據存在1行);

然後,更改服務器啓動時的字符集,或是修改配置文件my.ini中的字符集


 

此時,可以發現原來寫入的數據仍然不能正常顯示:

然後,插入漢字字符,顯示仍然爲亂碼:

通過如上測試可以發現,如果只在客戶端設置character_set_results那麼不管服務器端是什麼字符集時建立、插入漢字的表都顯示不正確。如果再設定character_set_client,仍然不能影響由於設置character_set_results所產生的影響。
設置character_set_results

設置character_set_client

然後,如果再設定character_set_connection,不會影響已經建立和插入的表,在新建立、插入漢字的表就能正確顯示
原有表不發生變化

新建插入表和漢字字符,顯示正常:

我們可以查看一下此時各個表的表結構及其他們的字符集:

 

 


總結一下,如果你的插入或是顯示字符出現亂碼,那麼多半是由於你的數據庫字符集出現了問題。如果要想正確顯示漢字,必須同時設定character_set_client和 character_set_connection參數和服務器端指定字符集保持一致,才能正確插入、顯示。

如果只是要顯示以前帶字符集正確插入漢字的表,可以只在客戶端指定character_set_results 就夠了。

附可以正確顯示漢字字符的的mysql 字符集配置供參考:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章