现总结一下,再说废话
emoji:?
1.emoji表情是4个字节,而普通的utf8是3个字节,所以要用utf8-mb4
2.MySQL配置后,图形化工具不一定会得到新的配置
3.图形化工具显示不了emoji标签
4.微信昵称支持emoji,而MySQL的utf8不支持
5.修改MySQL配置后,要重启MySQL服务
6.如果重启失败,停止后再启动就可以了
最近,公司在做一个微信投票,大致需求就是用户进来授权,然后投票,
而我,这边得到用户的信息当然是先保存了,就像一位大牛说的,万恶的微信支持 emoji标签做为昵称,
恰好,我的一位同事昵称是:?,保存到数据库一顿报错
sql语句:
insert into emoji.emoji (txt) value ('?')
Error Code: 1366. Incorrect string value: '\xF0\x9F\x8D\x8B' for column 'txt' at row 1 0.387 sec
于是,网上各种查,找到了答案,其实,这个是正确的,可以解决问题
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
把这个放到 /etc/my.cnf 中,然后重启MySQL,命令自己去百度吧
然后看一下,
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
看看:
这样其实就生效了,
可是,我看的是,可视化工具,这个就坑了,这时候可视化工具里的配置,并没有变
我用的是,MySQLworkbench,我是在测试表里测试,为了操作方便我就用的图形化工具,所以我插入一直报错,后来对比一下终端才发现问题,其实我的配置是生效了的
至于为什么会这样,还请大神指教!,我也查了,也问了,但是没找到答案
,这就是最好的证明
但是,workbench是显示不出来的,他显示的是一个问号
痛苦采坑,各种煎熬