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