1. 程式人生 > >MySQL數據庫字符集由utf8修改為utf8mb4一例

MySQL數據庫字符集由utf8修改為utf8mb4一例

weight 配置 其中 mil 混亂 客戶 family 測試 unicode

對於mysql 5.5 而言,如果不設定字符集,mysql默認的字符集是 latin1 拉丁文字符集;


但隨著各種業務的進一步發展,除了各個國家的本身語言字符,經常也會有一些表情符號出現在應用程序中,而在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實例讓設置生效,應用人員經過各種測試後,確認滿足字符集要求,各方面正常。

MySQL數據庫字符集由utf8修改為utf8mb4一例