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

2021-08-10 14:05:46 字數 2612 閱讀 1995

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

當向 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 。

client

為客戶端使用的字符集。

connection

為連線資料庫的字符集設定型別,如果程式沒有指明連線資料庫使用的字符集型別則按照伺服器端預設的字符集設定。

database

為資料庫伺服器中某個庫使用的字符集設定,如果建庫時沒有指明,將使用伺服器安裝時指定的字符集設定。

results

為資料庫給客戶端返回時使用的字符集設定,如果沒有指明,使用伺服器預設的字符集。

server

為伺服器安裝時指定的預設字符集設定。

system

為資料庫系統使用的字符集設定。

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

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

[mysql] 與

這時只需要將下的預設編碼 default-character-set=utf8 改為 

default-character-set=gbk ,重新啟動 mysql 服務即可。

mysql基礎配置之mysql的預設字元編碼的設定(my.ini設定字元編碼)

mysql的預設編碼是latin1,不支援中文,那麼如何修改mysql的預設編碼呢,下面以設定utf-8為例來說明.

需要注意的是,要修改的地方非常多,相應的修改方法也很多。下面是一種最簡單最徹底的方法:

一、windows系統 

1、中止mysql服務 

2、在mysql的安裝目錄下找到my.ini,如果沒有就把my-medium.ini複製為乙個my.ini即可 

3、開啟my.ini以後,在[client]和[mysqld]下面均加上default-character-set=utf8,儲存並關閉(mysqld中增加如果出錯,可以試character-set-server=utf8) 

4、啟動mysql服務

二、linux系統 

1、中止mysql服務(bin/mysqladmin -u root shutdown) 

2、在/etc/下找到my.cnf,如果沒有就把mysql的安裝目錄下的support-files目錄下的my-medium.cnf複製到/etc/下並改名為my.cnf即可 

3、開啟my.cnf以後,在[client]和[mysqld]下面均加上default-character-set=utf8,儲存並關閉 

4、啟動mysql服務(bin/mysqld_safe &)

非常簡單,這樣的修改一勞永逸,今後mysql一切相關的預設編碼均為utf-8了,建立新**的時候無需再次設定

需要注意的是,當前資料庫中已經存在的資料仍保留現有的編碼方式,因此需要自行轉碼,方法在網上有很多,不再贅述

注意:如果是高版本的mysql中,增加時,

將mysql預設編碼修改為utf-8呢?只需在my.ini中的[mysqld]組名的末尾新增:

character-set-server=utf8

即可。那mysqld:unknown variable 'default-character-set=utf8'的錯誤原因是什麼呢?因為引數:default-character-set=utf8 在較新版本的mysql 中已移除。所以,建議高版本的mysql使用」character-set-server「,而不要使用「default-character- set」。

檢視字元編碼:設定好後,如何檢視我們設定的字元編碼是否ok呢?可以在命令提示符下輸入: 

show variables like 'char%'

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...