富文本编辑器表情存入mysql报错:Cause:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\xA4\xA5\x0A\x0A...‘‘

发布于:2023-01-22 ⋅ 阅读:(6) ⋅ 点赞:(0) ⋅ 评论:(0)

1. 异常

Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\xA4\xA5\x0A\x0A...' for column 'content' at row 1

1.1 为什么出现此异常?

通常情况,Mysql数据编码格式为“utf-8”,对于汉字来说足够;Mysql中utf8占3个字节,但是,3个字节对于表情符号是不够的,需4个字节;此时使用utf8,会出现‘\xF0\x9F\x8D\x83\xF0\x9F’的问题

想要解决此问题,mysql的版本必须是5.5.9以上

2. 暂时解决

一旦重启电脑或者重启MySQL服务就失效

修改数据库的字符集

在这里插入图片描述

修改要存入表情的表的字符集
在这里插入图片描述
修改对应字段的字符集(如果使用的数据库可视化工具找不到修改字段的字符集的话,使用SQL语句)

注意:字段名为两个重复的(即你要修改的字段的名字)
ALTER TABLE 表名 CHANGE <字段名> <字段名> LONGTEXT CHARACTER SET utf8mb4;

修改服务器连接地址

:jdbc:mysql://localhost:3888/xxx?useUnicode=true&characterEncoding=UTF-8
:jdbc:mysql://localhost:3888/xxx?useUnicode=true

3.永久解决

修改默认的配置(找到mysql安装目录下的 my.int 文件)修改
character-set-server=utf8mb4
default-character-set=utf8mb4
default-character-set=utf8mb4

注意:字段名为两个重复的(即你要修改的字段的名字)
ALTER TABLE 表名 CHANGE <字段名> <字段名> LONGTEXT CHARACTER SET utf8mb4;