发现问题:
用户微信名称中包含emoji表情,无法插入数据库.
数据库报错信息:
ERROR
原因:
MySQL的文本(varchar,text),对emoji表情符号不是很好的支持,在5.5之前的版本,varchar和text都是不支持存储emoji表情符号的(即使是utf8)的编码模式。原因在于mysql的utf8是规定了每一个utf8字符按照3个字节来存储,而一个emoji(最初来自苹果系统,现在流行于各种移动操作系统)却需要4个字节来存储。这就导致了如果强制将emoji存储到varchar,text等字段上的时候,mysql会抛出异常,认为emoji是个不正确的文本。
其原因是utf8是不定长的,根据左侧位来决定占用了几个字节。emoji表情是4个字节,而MySQL的utf8编码最多支持3个字节,所以插入会出错。
检查MySQL Server版本
utf8mb4 支持需要MySQL Server v5.5.3+
解决办法:
修改数据库字符集
ALTER
修改表的字符集
ALTER
修改字段的字符集
ALTER
以上操作完毕最好再看下代码中数据库连接的地方如何设置的编码
我遇到的问题,到这里已经解决了.
想了解更多的内容看,原文出处:
让 MySQL 支持 emoji 表情符号存储www.hi-linux.com