很簡單的需求,將用戶微信名寫入MySQl即可,但是測試過程中卻遇到了問題,微信名中的emoji寫入資料庫失敗。解決步驟如下 1.瞭解utf8mb4 MySQL從5.5.3版本開始支持utf8mb4編碼,預設編碼還是utf8。目前最新的MySQL的預設編碼已經改為utf8mb4了,因為utf8可以表示 ...
很簡單的需求,將用戶微信名寫入MySQl即可,但是測試過程中卻遇到了問題,微信名中的emoji寫入資料庫失敗。解決步驟如下
1.瞭解utf8mb4
MySQL從5.5.3版本開始支持utf8mb4編碼,預設編碼還是utf8。目前最新的MySQL的預設編碼已經改為utf8mb4了,因為utf8可以表示三位元組的unicode,無法表示emoji表情或是特別複雜的漢字這類四位元組unicode。理論上原本utf8的字元集修改為utf8mb4是不會有問題的,為了更好的相容性可以選擇utf8mb4。當然,本著節省空間的原則,我們還是可以優先使用utf8。
2.修改MySQL資料庫
首先查看資料庫的字元集,show variables like 'character_set_database';
查詢結果為utf8,既然系統已經出現了字元集的相容性的問題,那乾脆改為utf8mb4吧
修改MySQL配置文件my.cnf
[mysqld]
character-set-server = utf8mb4
init_connect='SET NAMES utf8mb4'
然後重啟MySQL即可
3.修改數據表字元集
ALTER TABLE TABLENAME CHARSET=utf8mb4
4.修改業務代碼
在連接資料庫時,一般都顯示指定了字元集,需要修改為utf8mb4,charset=utf8mb4