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

2021-06-27 04:35:41 字數 1475 閱讀 7428

前段時間使用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 字符集配置供參考:

[cpp]view plain

copy

[client]   

default-character-set=gbk   

port=3306   

[server]   

default-character-set=gbk   

port=3306   

[mysql]   

default-character-set=gbk   

[mysqld]   

port=3306   

basedir=c:/program files/mysql/mysql/  

datadir=c:/program files/mysql/mysql/data/  

default-character-set=gbk   

default-storage-engine=innodb   

MySQL插入中文資料出現亂碼的問題

一 問題描述 很多同學可能遇到過這樣乙個問題 在mysql資料庫中插入帶有中文的資料時,會變成亂碼或者是問號,這是由於編碼不一致所引起的。二 解決方法 開啟mysql安裝路徑 一般是c program files mysql mysql server 找到my.ini 開啟my.ini檔案 在 cl...

Mysql插入資料亂碼

部署專案的時候,發現插入資料位亂碼,檢查編碼,專案編碼為utf8,mysql資料庫和表的編碼也是utf8。執行 show create database queendb 結果為 create database queendb 40100 default character set utf8 也是正常...

Mysql插入亂碼問題

原因 資料庫table和插入語句的字元編碼不匹配或者資料庫table的編碼不支援中文 解決方案 修改table中的字元編碼為 utf 8 或gbk,gb2312 在 中鏈結資料庫時,連線字串後面加上?characterencoding utf8,例如jdbc mysql localhost 3306...