當向 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資料庫亂碼問題
1,檢視資料庫編碼 命令 show variables like character set 2,修改已設定編碼 如對character set database修改編碼 命令 set character set database utf8 3,現象 用jdbc將中文字段插入mysql資料庫中,然後...
解決MySql資料庫的亂碼問題
問題的起源是安裝資料庫時時候沒有注意,最好的辦法是在安裝時把資料庫的編碼方式修改設定為utf 8的編碼方式,而最初的我採用預設一直 下一步 到底。一切問題就從此開始了 很多人勸我再裝一次!原因是安裝時修改編碼方式為utf 8則不會遇到後面的亂碼問題了!經過我的嘗試和總結解決該問題的方法如下 保證屢試...
解決MYSQL資料庫的亂碼問題
關於轉換或者公升級以後出現亂碼情況的說明 看到不少使用者反映轉換完以後是亂碼的情況 出現這種現象的主要原因是這類使用者使用的都是 mysql4.1 以上的版本 下面作乙個說明 希望出現這個問題的朋友都能耐心的把這個文件看完 原理 注意 本文件只對 mysql 4.1 及以上的資料庫版本有效,之前的 ...