最近我在開發時,在Navicat中看到中文亂碼,然後百度查了相關内容,說是Mysql亂碼,于是将MySql編碼改為utf8,但是還是亂碼,于是繼續百度,說是Navicat編碼和Mysql編碼不一緻,将Navicat的連結屬性改為utf-8,于是改了,依舊顯示亂碼。于是我就一樣一樣的解決,先解決了mysql亂碼問題,然後解決Navicat亂碼問題,詳細不中如下:
首先需要確定我們的mysql編碼正确,如下我們先進入mysql的控制台
進入控制台後我們通過如下指令檢視資料庫的編碼:
show variables like '%char%';
此處我的已經改成了utf8,如果上面幾個屬性中value有latin1,說明字元集不是utf8編碼,需要改變編碼,執行如下指令:
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
這裡要注意是utf8,不是utf-8;
當然,還有一些資料說需要改mysql配置檔案,在mysql安裝目錄下
因為我是在解決亂碼之前改的配置,是以是不是這裡起到決定性的作用我也不是很清楚,但是改成utf8也沒害處,将my.ini檔案中的default-character-set和character-set-server改為utf8
到這裡大部分文章說問題就解決了,但是這裡又出現了一個問題就是,我在mysql控制台插入中文的時候報錯,無法插入中文,最後找到一篇文章說這是cmd控制台的問題
cmd控制台采用的是gbk編碼格式,而我們的mysql是utf8格式,是以這就導緻了無法插入中文,是以我們要講mysql控制台改為gbk,這裡講mysql改為gbk後,在輸入中文時,mysql會自動講gbk轉換為utf8
從圖中可以看到,插入中文時報錯。
執行如下指令,講編碼改為gbk:
set names gbk;
這裡可以看到編碼改為了GBK,到這裡我們可以正常的通過mysql控制台插入中文資料了
下面我們來解決Navicat顯示亂碼問題
在資料庫連接配接列中右鍵,選擇連接配接屬性
我這裡使用的是11.1的版本,缺少一個使用mysql字元集的CheckBox,如果有,則打鈎,我看大部分部落格對上面編碼的選擇都是utf-8,這裡我也改成了utf-8,但是我的資料查詢時依舊亂碼,改成Current Windows codepage還是亂碼,後來改成了自動,中文正常展示了。
到此所有問題都解決了。
文中主要解決了三個問題:
1.Mysql亂碼
2.Mysql無法插入中文
3.Navicat亂碼
希望對大家能夠有幫助。