MySQL 插入資料時,中文亂碼問題

2021-07-09 10:40:48 字數 1152 閱讀 2291

當向 mysql 資料庫插入一條帶有中文的資料形如 insert into employee values(null,'張三','female','1995-10-08','2015-11-12','sales',2000,'是個好員工!');出現亂碼時,可以使用語句show variables like 'character%';來檢視當前資料庫的相關編碼集。

從上圖中可以看到 mysql 有六處使用了字符集,分別為:client 、connection、database、results、server 、system。其中與伺服器端相關:database、server、system(永遠無法修改,就是utf-8);與客戶端相關:connection、client、results 。

了解了上面的資訊我們來分析下亂碼的原因,問題出在了當前的 cmd 客戶端視窗,因為當前的 cmd 客戶端輸入採用 gbk 編碼,而資料庫的編碼格式為 utf-8,編碼不一致導致了亂碼產生。而當前 cmd 客戶端的編碼格式無法修改,所以只能修改 connection、 client、results 的編碼集來告知伺服器端當前插入的資料採用 gbk 編碼,而伺服器的資料庫雖然是採用 utf-8 編碼,但卻可以識別通知伺服器端的 gbk 編碼資料並將其自動轉換為 utf-8 進行儲存。可以使用如下語句來快速設定與客戶端相關的編碼集:

set names gbk;

設定完成後即可解決客戶端插入資料或顯示資料的亂碼問題了,但我們馬上會發現這種形式的設定只會在當前視窗有效,當視窗關閉後重新開啟 cmd 客戶端的時候又會出現亂碼問題;那麼,如何進行乙個一勞永逸的設定呢?在 mysql 的安裝目錄下有乙個my.ini 

[mysql]

default-character-set=utf8

[mysqld]

character-set-server=utf8

這時只需要將下的預設編碼 default-character-set=utf8 改為 default-character-set=gbk ,重新啟動 mysql 服務即可。



MySQL插入資料時中文亂碼問題

當向 mysql 資料庫插入一條帶有中文的資料形如 insert into employee values null,張三 female 1995 10 08 2015 11 12 sales 2000,是個好員工!出現亂碼時,可以使用語句 show variables like character...

MySQL 插入資料時,中文亂碼問題的解決。

當向 mysql 資料庫插入一條帶有中文的資料形如 insert into employee values null,張三 female 1995 10 08 2015 11 12 sales 2000,是個好員工!出現亂碼時,可以使用語句 show variables like character...

MySQL 插入資料時,中文亂碼問題的解決

當向 mysql 資料庫插入一條帶有中文的資料形如 insert into employee values null,張三 female 1995 10 08 2015 11 12 sales 2000,是個好員工!出現亂碼時,可以使用語句 show variables like character...