mysql 支持emoji 表情字符的解决方法。
1、utf8 字符集最多3个字符,而emoji表情字符是unicode大字符集,需要4个字节表示,所以utf8无法表示。
mysql要存储emoji字符,需要设成utf8mb4字符集,意思就是utf8 max byte 4,是utf8的超集。
utf8mb4 is a superset of utf8
2、mysql必须5.5.3以上版本才支持。
3、对于客户端,字符集仍然是使用utf8,但必须先执行 set names utf8mb4 语句。
4、如果是用jdbc的话,mysql-jdbc必须 5.1.13
以上
5、如果是用阿里的连接池druid的话,druid也要高版本的,我用老的 druid-0.2.12的话是不行的。
6、表结构转成 utf8mb4的。
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4; #或 # ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
参考资料:
1、 mysql : utf8mb4 的问题 http://www.cnblogs.com/yjmyzz/p/mysql-utf8mb4-jdbc.html
2、 https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4
3、 MySQL乱码问题以及utf8mb4字符集 http://www.tuicool.com/articles/zAnEV3
4、 emoji处理方式大起底 http://blog.csdn.net/z69183787/article/details/48465717
5、What's the difference between utf8_general_ci and utf8_unicode_ci http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
6、 MySQL java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x90</...' for
7、 https://my.oschina.net/wingyiu/blog/153357
8、 微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程 https://segmentfault.com/a/1190000004594385
9、 http://www.istartedsomething.com/uploads/emojisegoe.html