这篇文章将为大家详细讲解有关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…”错误怎么办