php 實現mysql存儲支持emoji表情

最近一直在做微信公衆號相關的需求,突然發現如果用戶的暱稱是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標籤時存儲成功!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章