Mysql數(shù)據(jù)庫亂碼與編碼問題篩查
最近接連遇到數(shù)據(jù)庫編碼問題,讓你的系統(tǒng)本來像個美麗的姑娘卻忽然發(fā)現(xiàn)她不識字一樣難受,其實很多時候是編碼的問題,而mysql(特別地)設(shè)計編碼的地方很多,在這里做一個篩查:
1 mysql編碼
用下面的命令可以查看mysql當(dāng)前的各種默認(rèn)編碼:
showvariables like 'character/_set/_%'; 可以看到目前mysql的默認(rèn)編碼;showvariables like 'collation_%';
my.cnf中設(shè)置對應(yīng)的編碼:
[client]default-character-set=utf8[mysqld]collation_server = utf8_general_cicharacter_set_server = utf8[mysql]default-character-set=utf8[mysqldump]default-character-set=utf8
2 數(shù)據(jù)庫編碼:
CREATE DATABASE IF NOT EXISTS my_db DEFAULT CHARSET utf8COLLATE utf8_general_ci;
3. 數(shù)據(jù)表編碼
/*!40101SET @saved_cs_client =@@character_set_client */;/*!40101SET character_set_client = utf8 */;CREATETABLE `access` ( `id` int(8) unsigned NOT NULL AUTO_INCREMENT, `role_id` smallint(6) unsigned NOT NULL, `node_id` smallint(6) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `nodeId` (`node_id`))ENGINE=MyISAM AUTO_INCREMENT=364 DEFAULTCHARSET=utf8;/*!40101 SET character_set_client = @saved_cs_client */;
4. 轉(zhuǎn)存的時候
有時候需要轉(zhuǎn)存數(shù)據(jù)庫,但是好好的數(shù)據(jù)庫轉(zhuǎn)到新庫就亂碼了,你可能需要:
#mysqldump --default-character-set utf8 -u root -pmypass mydb> mydb.sql
5. 查詢的時候
有時候,雖然mysql、數(shù)據(jù)庫、數(shù)據(jù)表以及導(dǎo)出的數(shù)據(jù)sql文件編碼都沒問題,但是query出來仍然出現(xiàn)亂碼,可能是因為,在query的時候也需要設(shè)置編碼,函數(shù)名稱大同小異,在php+mysql中是:
mysql_query('set names utf8');
以上。
bitsCN.com聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com