1. 程式人生 > >mysql控制檯顯示中文亂碼的原因和解決

mysql控制檯顯示中文亂碼的原因和解決

控制檯編碼

修改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。

  1. 修改character_set_client變數:set character_set_client=gbk;
  2. 修改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上的配置覆蓋了,也就不會出現亂碼了。