mysql出現的亂碼問題是非常頭疼的,有時可能出現在控制台,有時可能是服務方面的。
MySQL對於字符集的指定可以細化到一個數據庫,一張表,一列。傳統的程序在創建數據庫和數據表時並沒有使用那麼復雜的配置,它們用的是默認的配置。
(mysql安裝時,特別是使用集成環境:比如appserver wampserver等如果不設置密碼,打開控制台直接按enter鍵進入。)
第一:如何查詢mysql的編碼:
使用命令語句:
mysql> SHOW VARIABLES LIKE 'character%';
第二:解決亂碼問題,可能是編碼的問題,可以這樣修改編碼:
問題一:到處都是亂碼,最簡單的修改方法,就是修改mysql的my.ini文件中的字符集鍵值:
default-character-set = utf8
character_set_server = utf8
其次的方法就是使用mysql的命令:
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
問題二:一般就算設置了表的默認字符集為utf8並且通過UTF-8編碼發送查詢,你會發現存入數據庫的仍然是亂碼。
問題就出在這個connection連接層上。解決方法是在發送查詢前執行一下下面這句:
SET NAMES 'utf8';
它相當於下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set
_connection = utf8;
問題三:不知道什麼原因,我在自己機器上把上述三個字符集都設置成utf8後,查詢中文結果還是亂碼,只有把character_set_results設置成GBK之後才能從命令行正常顯示中文