問題:
由于MySQL編碼原因會(huì)導(dǎo)致數(shù)據(jù)庫出現(xiàn)亂碼。
解決辦法:
修?MySQL數(shù)據(jù)庫字符編碼為UTF-8,UTF-8包含全世界所有國家需要用到的字符,是國際編碼。
具體操作:
1、進(jìn)入MySQL控制臺(tái)
mysql -uroot -p #輸入密碼進(jìn)入
status; #查看當(dāng)前MySQL運(yùn)行狀態(tài),

Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
默認(rèn)客戶端和服務(wù)器端都用了latin1編碼,所以會(huì)出現(xiàn)亂碼。
2、修改mysql配置文件
vi /etc/my.cnf
#在[client]段增加下面代碼
default-character-set=utf8
#在[mysqld]段增加下面的代碼
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
:wq! #保存退出
3、service mysqld restart #重啟MySQL
再次進(jìn)入MySQL控制臺(tái)查看,如下圖所示:

Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
show variables like 'character_set_%'; #查看MySQL字符集

MySQL數(shù)據(jù)庫字符集編碼修改完成!
參數(shù)說明:
character_set_client:客戶端請(qǐng)求數(shù)據(jù)的字符集。
character_set_connection:從客戶端接收到數(shù)據(jù),然后傳輸?shù)淖址?/p>
character_set_database:
默認(rèn)數(shù)據(jù)庫的字符集,無論默認(rèn)數(shù)據(jù)庫如何改變,都是這個(gè)字符集;如果沒有默認(rèn)數(shù)據(jù)庫,
使character_set_server指定的字符集,此參數(shù)無需設(shè)置。
character_set_filesystem:
?操作系統(tǒng)上文件名轉(zhuǎn)化成此字符集,即把character_set_client轉(zhuǎn)換character_set_filesystem,默認(rèn)binary即可。
character_set_results:結(jié)果集的字符集。
character_set_server:數(shù)據(jù)庫服務(wù)器的默認(rèn)字符集。
character_set_system:這個(gè)值總是utf8,不需要設(shè)置,存儲(chǔ)系統(tǒng)元數(shù)據(jù)的字符集。
備注:
MySQL 5.5之前的版本設(shè)置辦法:
在[client]段下添加
default-character-set=utf8
在[mysqld]段下添加
default-character-set=utf8
注意,如果修改后不能啟動(dòng)報(bào)錯(cuò),把[mysqld]段下default-character-set=utf8改為character_set_server=utf8,取消[client]段的設(shè)置。
創(chuàng)建數(shù)據(jù)庫的命令:
Create DATABASE IF NOT EXISTS mydata default charset utf8 COLLATE utf8_general_ci;