最近一直在做微信公衆號相關的需求,突然發現如果用戶的暱稱是emoji標籤的話,這時候用戶的暱稱無法正常的存儲到數據庫中
一:原因:
這是由於Mysql的utf8編碼最多3個字節,然而emoji標籤的是4個字節,所以無法存儲emoji標籤信息,所以需要將數據的編碼改成utf8mb4
二:解決:
1:設置連接編碼
SET NAMES utf8mb4
上面的命令相當於:
SET character_set_client='utf8mb4';
SET character_set_connection='utf8mb4';
SET character_set_results='utf8mb4';
2:設置數據庫編碼
ALTER DATABASE database_name(數據庫名) CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
3:設置表編碼
ALTER TABLE table_name(表名) CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
設置如上編碼之後在php連接數據時設置:
'charset' => 'utf8mb4',
進行如上配置之後,這時候存儲emoji標籤時存儲成功!!!