一般MySQL 數據庫亂碼由以下幾種情況造成(按照順序):
1. 創建數據庫的時候沒設置編碼,解決辦法: 就是在創建數據庫的時候設置編碼, 例如: CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;
2. 創建數據表的時候沒設置數據庫引擎編碼, 解決辦法:CREATE TABLE `tb_album` (`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.MySQL導入.sql文件的時候,由於編碼問題,導致中文亂碼,首先進入數據庫 mysql -u root -p 然后輸入密碼進入, 然后輸入命令查看編碼show variables like 'char%';

你會發現很多編碼默認都是gbk,而且character_set_server(這個就是導入.sql文件的時候導致亂碼的原因)的編碼默認是latin1,
其他的都可以在mysql控制台通過命令 set xxx = utf8; 修改編碼(永久修改),
唯獨character_set_server不行,退出之后再登錄還是latin1,

解決辦法:找到MySQL安裝目錄下的my.ini,設置default-character-set=utf8 和 character_set_server=utf8
如果你的MySQL是免安裝版,那么是沒有my.ini的,安裝目錄下只有my-default.ini文件,而且打開也沒有character-set-server,
先把my-default.ini拷貝一份,並重命名為my.ini,這樣該目錄下就有了my.ini和my-default.ini兩個ini文件
然后打開my.ini加上以下三行代碼
[client]
default-character-set=utf8
/[mysqld]/
character-set-server=utf8
具體位置如下:

然后重新啟動MYSQL服務就發現character-set-server已經不再是latin1了:
如果你的MySQL是安裝版本,那就找到my.ini,設置default-character-set=utf8 和 character-set-server=utf8,重啟MySQL服務即可。
