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

posted @ 2017-05-16 15:13  xunux  阅读(1115)  评论(0编辑  收藏  举报