對於mysql 5.5 而言,若是不設定字符集,mysql默認的字符集是 latin1 拉丁文字符集;mysql
但隨着各類業務的進一步發展,除了各個國家的自己語言字符,常常也會有一些表情符號出如今應用程序中,而在mysql 5.5 以前,UTF-8編碼只支持1-3個字節,支持BMP這部分的Unicode編碼區;從MySQL 5.5開始,能夠支持4個字節UTF編碼 utf8mb4 ,一個字符可以支持更多的字符集,也可以支持更多表情符號。
utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8字符集的超集。因此如今一些新的業務,好比ISO等,會將MySQL數據庫的字符集設置爲utf8mb4。
今天在處理一個應用需求的時候,就遇到這樣一個問題:
固然調整的最好方法是客戶端,mysql數據庫的字符集都修改成utf8mb4,但這樣修改量比較大,並且若是客戶端一部分修改成utf8,一部分爲utf8mb4的話,容易發生混亂。
通過幾回測試後,MySQL數據庫的my.cnf中關於字符集的配置修改成下面的配置了:
1 [client]
2 default-character-set=utf8mb4
3
4 [mysqld]
5 character-set-server = utf8mb4
6 collation-server = utf8mb4_unicode_ci
7 init_connect='SET NAMES utf8mb4'
8 skip-character-set-client-handshake = true
9
10 [mysql]
11 default-character-set = utf8mb4
其中collation-server 這些設置爲utf8mb4字符集是比較容易理解的,就是將MySQL數據庫相關的字符集都設置爲utf8mb4;
init_connect='SET NAMES utf8mb4' 表示初始化鏈接都設置爲utf8mb4字符集,再配置一個
這些參數在my.cnf配置好後,重啓mysql實例讓設置生效,應用人員通過各類測試後,確認知足字符集要求,各方面正常。