MySQL在5.5.3版本之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容四位元組的unicode。其實,utf8mb4是utf8的超集,理論上原來使用utf8,然後将字元集修改為utf8mb4,也 會不會對已有的utf8編碼讀取産生任何問題。
一次在做微信二開的項目時,發現儲存微信使用者資訊的nickname時報錯,尋找原因發現是有些使用者昵稱是帶有emoji表情符的,并且當時的資料庫表屬性設定的字元編碼還是utf8的,資料庫當然會報錯。經過網上搜尋一些資料,找到了完整的解決方案:
- 修改database,table,column字元集:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 編輯my.cnf檔案,在對應章節添加如下内容:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
- 重新開機mysql服務即可