让Java后台MySQL数据库能够支持emoji表情的方法
作者:bigcode 时间:2022-12-30 04:24:45
前言
公司最近在开发中遇到一个问题,在弄帖子的发布与回复问题,然后再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了
来源:http://www.bigcode.top/160/
标签:java,mysql,emoji表情
0
投稿
猜你喜欢
解决springboot项目不配置数据源启动报错问题
2022-04-27 23:12:21
Java 反转带头结点的单链表并显示输出的实现过程
2022-06-08 18:34:39
使用PackageManager获得应用信息实例方法
2023-09-10 22:59:30
一篇文章带你从java字节码层理解i++和++i
2023-05-29 13:57:58
java 中基本算法之希尔排序的实例详解
2023-07-30 12:26:37
C#集合之有序列表的用法
2023-10-02 15:47:02
详解java中的6种单例写法及优缺点
2021-06-01 17:26:01
详解Spring Boot最核心的27个注解,你了解多少?
2023-11-20 06:23:35
Android之listfragment的使用例子
2021-05-31 02:10:19
深入分析C#中的异步和多线程
2021-08-15 19:29:49
Android自定义渐变式炫酷ListView下拉刷新动画
2021-12-26 17:31:09
Flutter绘图组件之CustomPaint使用详解
2021-12-13 01:26:06
Java之InputStreamReader类的实现
2023-09-03 01:28:17
Android自定义View新年烟花、祝福语横幅动画
2022-01-24 21:31:27
Java Grpc实例创建负载均衡详解
2022-03-07 17:50:15
Java初学之继承与多态
2022-11-29 15:13:04
基于C#对用户密码使用MD5加密与解密
2022-11-24 23:05:23
Kotlin与Java相互调用的完整实例
2023-06-17 03:23:23
java多线程加锁以及Condition类的使用实例解析
2023-08-07 07:25:30
GraphQL入门总体创建教程
2022-10-16 12:29:09