數據庫中關於字符集的種類有很多,對編程有影響的主要是客戶端字符集和數據庫字符集(還有一個服務器字符集,不知道干什麼用的)。
數據庫中常用的操作就是保存數據和讀取數據,在這過程中,亂不亂碼和數據庫字符集貌似沒有什麼關系。我們只要保證寫入時選擇的字符集和讀取時選擇的字符集一致,即只需保證兩次操作的客戶端字符集一致即可。
客戶端字符集的設置,依據客戶端不同方法不同:
1. 使用控制台連接,在my.ini文件中的clIEnt項裡面設置;
2. 使用ems連接,優先使用ems連接配置的字符集,默認使用my.ini文件中的設置;
3. jdbc連接,在連接串中指定:
jdbc:MySQL://192.168.3.99:3306/test?useUnicode=true&;characterEncoding=gbk
在寫入時Mysq會將客戶端指定的字符集轉換成數據庫字符集存入數據文件,讀取時又將數據庫字符集轉換成客戶端指定的字符集展示給客戶端,把客戶端字符集和數據庫字符設置一致,顯而易見的好處是免掉轉換的性能損耗;另外,如果考慮到以後數據庫的遷移,將數據庫字符集設置為大多數數據庫都支持的字符集會省掉很大麻煩。
幾個字符集相關的命令:
1. 查看 MySQL 數據庫服務器字符集,數據庫字符集和客戶端字符集
show variables like ’%char%’;
character_set_clIEnt,客戶端字符集
character_set_database,數據庫字符集
character_set_server,服務器字符集
2. 查看 MySQL 數據表(table) 的字符集
show table status from tablename like ’%countrIEs%’;
3. 查看 MySQL 數據列(column)的字符集。
show full columns from tablename;
4. 查看當前安裝的 MySQL 所支持的字符集。
show char set;