引言
今天做用户签名时,发现Android用户可以成功输入Emoji表情����,但是插入MySQL数据库时候就会出错,最终整个流程失败。
解决方法
解决方法是将字符集utf8
转换成utf8mb4
,MySQL和PHP连接端都要设置
MySQL
ALTER TABLE
tbl_name
CONVERT TO CHARACTER SET
charset_name
;
PHP使用了ThinkPHP框架,设置连接MySQL的参数
'DB_CHARSET' => 'utf8mb4', // 数据库编码默认采用utf8mb4
参考文章中还有许多设置,但是暂时用不上╮(╯▽╰)╭
原理
关于emoji表情的话mysql的utf8是不支持,需要修改设置为utf8mb4,才能支持, 详细emoji表情与utf8mb4的关系 。——MySQL乱码问题以及utf8mb4字符集