MySQL查詢讀取數(shù)據(jù)庫時(shí)出現(xiàn)亂碼問題是一個(gè)常見的問題。在常規(guī)情況下,編碼一般使用UTF-8或GBK。在將數(shù)據(jù)寫入數(shù)據(jù)庫之前需要確保數(shù)據(jù)已經(jīng)被編碼。
CREATE TABLE `example` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在MySQL中,可以使用SET NAMES命令進(jìn)行編碼設(shè)置。
SET NAMES 'utf8';
當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)全部被編碼后,讀取數(shù)據(jù)時(shí)就不會(huì)出現(xiàn)亂碼問題。如果出現(xiàn)了亂碼問題,可以使用如下命令解決:
SELECT CONVERT(CONVERT(`column_name` USING latin1) USING utf8) FROM `table_name`;
其中,`column_name`是需要轉(zhuǎn)換的字段名稱,`table_name`是表名稱。使用latin1編碼進(jìn)行轉(zhuǎn)換。
事實(shí)上,MySQL 5.5以后的版本,已經(jīng)提供了一種更加方便的方式進(jìn)行亂碼處理??梢栽趍y.cnf文件中設(shè)置編碼為UTF-8以及字符集為UTF-8。如下所示:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 collation-server=utf8_unicode_ci
當(dāng)進(jìn)行連接時(shí),MySQL會(huì)自動(dòng)使用UTF-8的編碼方式,這樣就避免了亂碼問題,更加方便快捷。