千家信息网

MySQL存储表情时报java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’错误怎么办

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章将为大家详细讲解有关MySQL存储表情时报java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'
千家信息网最后更新 2024年11月30日MySQL存储表情时报java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’错误怎么办

这篇文章将为大家详细讲解有关MySQL存储表情时报java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'错误怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

本项目是基于Spring MVC + MySQL + Druid DataSource。在往数据库插入表情Emoji字符时报错:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xA9\x0D\x0A...'

普通字符最多占用3个字节,使用utf8足够。而emoji表情字符占用4个字节,需要使用utf8mb4字符集存储。解决需要在两个地方做修改:MySQL服务器端和连接的客户端。

MySQL服务器端

之前给大家介绍过使MySQL能够存储emoji表情字符的设置教程,想进一步了解的朋友可以先看一看。

在服务器端把需要存储表情emoji字符的字段改用utf8mb4字符集:

ALTER TABLE mytable MODIFY COLUMN myfiled varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

客户端

客户端需要把连接的字符集设定为utf8mb4。

设置如下:

set names utf8mb4;

使用的是阿里开源的druid datasource,它有一个属性connectionInitSqls,它用来设置物理连接初始化的时候执行的sql。所以我们可以使用connectionInitSqls来初始化连接。

Spring配置如下:

      

其他的数据库连接池如dbcp2,HikariCP都有connectionInitSqls属性。

关于"MySQL存储表情时报java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'错误怎么办"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0