公司需求是5.5.23,而最新版是5.7.11,在我电脑上5.5.23版本Mysql不能重启,所以我是先安装5.7.11关闭掉mysql,再安装回5.5.23让mysql的配置my.cnf生效
将数据库、表、字段都改成了utf8mb4,但是插入的时候四字节的Emoji表情还是插入不成功
经过验证mysqlworkbench和navicat连接上以后执行命令
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
可以看到连接的字符集是utf8,而不是utf8mb4,所以插入Emoji表情会乱码,所以执行下面的命令
SET names utf8mb4;
执行完以后,再用mysqlworkbench或者navicat插入表情就不会乱码了
现在就剩下mybatis,spring怎样插入不乱码了,网上说把useUnicode=true和characterEncoding=utf8去掉,但是插入中文会乱码啊,好吧我也不知道重启以后为什么可以插入而不乱码,
useUnicode=true&characterEncoding=utf8还是要保留的
Emoji表情网站 http://www.fuhaodq.com/emoji/
经测试,只要字段设成了utf8mb4,保存之前,先执行SET names utf8mb4,插入到数据库中也不会乱码,查询的时候如果乱码,也先执行SET names utf8mb4,再查询就不乱码了。
utf8mb4_unicode_ci和utf8mb4_general_ci,网上有对这两种的区别做说明,utf8mb4_unicode_ci排序慢、精度高,utf8mb4_general_ci排序快、精度低,只有在德语和法语中某几个字符作比较的时候才有区别,所以utf8mb4_general_ci完全能够满足需求,推荐使用utf8mb4_general_ci。
MySQL中文转换成拼音的函数 http://www.zgguan.com/zsfx/mysql/13453.html