当前位置: 移动技术网 > IT编程>开发语言>Java > 让Java后台MySQL数据库能够支持emoji表情的方法

让Java后台MySQL数据库能够支持emoji表情的方法

2019年07月22日  | 移动技术网IT编程  | 我要评论

明代,怪侠一枝梅剧情介绍,epic接线盒

前言

公司最近在开发中遇到一个问题,在弄帖子的发布与回复问题,然后再ios端和android端添加表情的时候都会出错

caused by: java.sql.sqlexception: incorrect string value: '\xf6\x9d\x98\x84' for column 'comment' at row 1

提示表情有问题,然后赶紧查资料。

首先数据库编码为utf-8,字段content设置为text(charset=utf8 collate=utf8_unicode_ci)用于存储帖子内容信息,现在上线新功能存储emoji表情,插入emoji表情就会报出上述错误,utf-8编码有可能是两个、三个、四个字节。emoji表情是4个字节,而mysql的utf8编码最多3个字节,所以数据插不进去。utf8mb4兼容utf8,且比utf8能表示更多的字符,所以要设置数据库的编码为utf8mb4。

数据库编码从utf8设置为utf8mb4

1、修改my.cnf

[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'set names utf8mb4'
character-set-client-handshake = false

2、对数据库相关的表进行字符集修改

将数据库转换为utf8mb4

alter database post character set utf8mb4 collate utf8mb4_unicode_ci;
 
alter table `post_article` convert to character set utf8mb4 collate utf8mb4_unicode_ci;
 
alter table `post_article` modify column `content` text character set utf8mb4 collate utf8mb4_unicode_ci;

3、重启数据库

sudo /etc/init.d/mysql restart

4、检查数据库的字符集是否是utf8mb4

show variables where variable_name like 'character%' or variable_name like 'collation%';

5、java 设置

设置java的数据库连接,将characterencoding去掉,然后保证mysql connector版本高于5.1.13,就ok了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网