MySQL存储表情时报java.sql。SQLException异常:错误的字符串值:“\ xF0 \ x9F \ x92 \ xA9 \ x0D \ x0A…”错误怎么办

  介绍

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

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

java.sql。SQLException异常:错误的字符串值:& # 39;\ xF0 \ x9F \ x92 \ xA9 \ x0D \ x0A……& # 39;

普通字符最多占用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;

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

<强>春配置如下:

& lt; bean  id=癲ataSource",类=癱om.alibaba.druid.pool.DruidDataSource", init方法=癷nit",销毁方法=癱lose"比;   ,& lt; !——,基本属性,url,用户,password ——比;   ,& lt; property  name=皍rl",价值=https://www.yisu.com/zixun/" jdbc: mysql://localhost: 3888/maj吗?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull "/>   <属性名="用户名" value=" dbusername "/>   <属性名="密码" value=" dbpasswod "/>   <属性名=" connectionInitSqls " value="设置名称utf8mb4;“/>      

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

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

MySQL存储表情时报java.sql。SQLException异常:错误的字符串值:“\ xF0 \ x9F \ x92 \ xA9 \ x0D \ x0A…”错误怎么办