MySQL字符集與亂碼問(wèn)題淺析
關(guān)于MySQL字符集的種類有很多,對(duì)編程有影響的主要是客戶端字符集和數(shù)據(jù)庫(kù)字符集。
數(shù)據(jù)庫(kù)中常用的操作就是保存數(shù)據(jù)和讀取數(shù)據(jù),在這過(guò)程中,亂不亂碼和MySQL字符集貌似沒(méi)有什么關(guān)系。我們只要保證寫(xiě)入時(shí)選擇的字符集和讀取時(shí)選擇的字符集一致,即只需保證兩次操作的客戶端MySQL字符集一致即可。
客戶端字符集的設(shè)置,依據(jù)客戶端不同方法不同:
1. 使用控制臺(tái)連接,在my.ini文件中的client項(xiàng)里面設(shè)置;
2. 使用ems連接,優(yōu)先使用ems連接配置的字符集,默認(rèn)使用my.ini文件中的設(shè)置;
3. jdbc連接,在連接串中指定:
- jdbc:mysql://192.168.3.99:3306/test?useUnicode=true& ;characterEncoding=gbk
在寫(xiě)入時(shí)Mysq會(huì)將客戶端指定的字符集轉(zhuǎn)換成數(shù)據(jù)庫(kù)字符集存入數(shù)據(jù)文件,讀取時(shí)又將數(shù)據(jù)庫(kù)字符集轉(zhuǎn)換成客戶端指定的字符集展示給客戶端,把客戶端字符集和數(shù)據(jù)庫(kù)字符設(shè)置一致,顯而易見(jiàn)的好處是免掉轉(zhuǎn)換的性能損耗;另外,如果考慮到以后數(shù)據(jù)庫(kù)的遷移,將數(shù)據(jù)庫(kù)字符集設(shè)置為大多數(shù)數(shù)據(jù)庫(kù)都支持的字符集會(huì)省掉很大麻煩。
幾個(gè)字符集相關(guān)的命令:
1. 查看 MySQL 數(shù)據(jù)庫(kù)服務(wù)器字符集,數(shù)據(jù)庫(kù)字符集和客戶端字符集
- show variables like '%char%';
◆character_set_client,客戶端字符集
◆character_set_database,數(shù)據(jù)庫(kù)字符集
◆character_set_server,服務(wù)器字符集
2. 查看 MySQL字符集的數(shù)據(jù)表(table)
- show table status from tablename like '%countries%';
3. 查看 MySQL字符集的 數(shù)據(jù)列(column)。
- show full columns from tablename;
4. 查看當(dāng)前安裝的 MySQL 所支持的字符集。
【編輯推薦】