一、產生原因分析
數據庫的編碼格式和導入的.sql數據格式不一致導致
列如:我的數據庫編碼格式為gbk,而導入的數據表格式為utf8,則導入的數據表后其中中文顯示為亂碼
二、解決方案
1.編輯windows下MySQL的安裝路徑下(我的 為C:\Program Files\MySQL\MySQL Server 5.5)my.ini文件,用記事本打開修改以下2處設置為utf8編碼格式:
一處: # CLIENT SECTION 下
default-character-set=utf8
二處: # SERVER SECTION 下
character-set-server=utf8
2.在windows的服務中重啟MySQL服務(我的win7按以下方式啟動無效,我在計算機管理下服務中重啟)
Windows可在服務管理器中操作,也可使用命令行:
net stop MySQL回車
net start MySQL 回車
服務名可能不一定為MySQL,請按自己的設置
3.查看MySQL的設置結果
mysql> show variables like '%character%';
顯示結果應該類似如下:
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\ |
如果仍有編碼不是utf8的,請檢查配置文件,也可使用mysql命令設置:
set character_set_client = utf8;
set character_set_server = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;
set collation_connection = utf8_general_ci;
set collation_database = utf8_general_ci;
set collation_server = utf8_general_ci;
另外:
建立數據庫時可以使用以下命令:
create database 數據庫名 character set utf8;
use 數據庫名;
source 導入的數據庫.sql;
修改數據庫編碼的命令為:
alter database 數據庫名 character set utf8;
特別說明下,我的是win7操作系統,MySQL為MySQL Server 5.5版本,期間重啟MySQL服務器后查看發現character_set_database這個變量還是gbk,其它為utf8(注意不能為utf-8),我最后用alter database character set utf8;后重啟MySQL服務就變過來了!!
4.以上設置好后重啟MySQL再次導入.sql文件后,數據庫表中文顯示正常中文