一般这个问题会在需要通过第三方登录的产品中会遇到,因为直接从第三方那边获取过来的昵称很有可能是带各种emojo表情的,然后假如你的mysql数据库不兼容的话,那么会给你报错,使原本可以正常登录的系统报错;当然在选择想要兼容emojo表情前必须确认一下自己的mysql版本,要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错;否则我就建议因md5或者什么其他方法入库了;接下来就说说怎么做:
首先需要停止mysql服务,修改my.cnf或my.ini文件
[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
init_connect='SET NAMES utf8mb4'
然后重启服务
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
再根据你的需要修改相应表的字段的字符集,将需要存emojo表情的修改成
注意:类似用nav终端去插入是无法插入的,如果用程序代码去插入的话是可以的,而且那个jdbc链接中必须去掉指定的编码,这样就可以入库了,虽然入库后在客户端那边看到的是问号,但是当你用程序查出来的时候是正常的;如果不修改mysql的配置,去掉jdbc连接的字符串编码,那么用程序也是可以入库,但是查出来的时候却是乱码的;
兼容emojo标签的几个必要条件:
1.更改mysql的配置
2.修改jdbc链接的指定字符集
3.修改对应表字段的字符集
提示:
1.库的编码是无所谓的,就算设置成utf-8也不影响emojo的入库和查询
2.入库后在客户端看到的那个字段里emojo表情变成了问号,然后用命令行查询的时候直接没有了
3.emojo表情存入redis后,目前没有任何问题;