今天项目中有一个评论的功能, ios输入一个emoji表情后, 服务端异常,通过查看信息得知是mysql对表情符号插不进去导致,
仔细了解下,是因为普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集.
那接下来就是解决问题,下面的都是自己的亲测可用:
1. 修改表字段字符集为utf8mb4
ALTER TABLE thirdpartyuserinfo MODIFY NickName TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE userinfo MODIFY NickName TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2.再去修改表字符集utf8mb4
ALTER TABLE thirdpartyuserinfo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE userinfo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3.再去修改数据库的字符集utf8mb4
cd /etc/vim my.cnf
添加下面两句到文件中,保存退出
init-connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
4 重启mysql服务
通过上面的操作,就能把表情插入进去了.