博客 / 詳情

返回

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標籤時存儲成功!!!

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.