mysql控制檯顯示中文亂碼的原因和解決
阿新 • • 發佈:2018-12-21
控制檯編碼
修改character_set_client、character_set_results、character_set_connection為GBK,就不會出現亂碼了。但其實只需要修改character_set_client和character_set_results。
控制檯的編碼只能是GBK,而不能修改為UTF8,這就出現一個問題。客戶端傳送的資料是GBK,而character_set_client為UTF8,這就說明客戶端資料到了伺服器端後一定會出現亂碼。既然不能修改控制檯的編碼,那麼只能修改character_set_client為GBK了。
伺服器傳送給客戶端的資料編碼為character_set_result,它如果是UTF8,那麼控制檯使用GBK解碼也一定會出現亂碼。因為無法修改控制檯編碼,所以只能把character_set_result修改為GBK。
- 修改character_set_client變數:set character_set_client=gbk;
- 修改character_set_results變數:set character_set_results=gbk;
總結一句話:
mysql控制檯輸入的資料預設編碼是gbk,然而mysql伺服器按照utf-8來解析儲存資料.所以儲存進去的資料必然出現亂碼
讀取資料庫的資料,mysql按照utf-8編碼傳輸到控制檯,然而控制檯預設按照gbk來解析,所以顯示的資料必然出現亂碼
一勞永逸的解決辦法
配置檔案路徑:D:\Program Files\MySQL\MySQL Server 5.1\ my.ini
[client]
port=3306
[mysql]
default-character-set=gbk
3 MySQL工具
使用MySQL工具是不會出現亂碼的,因為它們會每次連線時都修改character_set_client、character_set_results、character_set_connection的編碼。這樣對my.ini上的配置覆蓋了,也就不會出現亂碼了。