让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
  • asp之家 软件编程 m.aspxhome.com