数据库教程:MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘xF0x9Fx92xA9x0Dx0A…’的解决方法分享

前言

本文主要介绍了关于MySQL存储表情报错:java.sql.SQLException:Incorrectstringvalue:’xF0x9Fx92xA9x0Dx0A…’的相关解决方法,分享出供大家参考学习,下面话不多说了,来一起看看详细的介绍:

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

java.sql.SQLException:Incorrectstringvalue:’xF0x9Fx92xA9x0Dx0A…’

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

MySQL服务器端

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

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

ALTERTABLEmytableMODIFYCOLUMNmyfiledvarchar(100)CHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;

客户端

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

设置如下:

setnamesutf8mb4;

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

Spring配置如下:

<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"> <!--基本属性url、user、password--> <propertyname="url"value="jdbc:mysql://localhost:3888/majing?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"/> <propertyname="username"value="dbusername"/> <propertyname="password"value="dbpasswod"/> <propertyname="connectionInitSqls"value="setnamesutf8mb4;"/> <!--其他配置--> </bean>

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

上述就是数据库技术:MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘xF0x9Fx92xA9x0Dx0A…’的解决方法分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/914793.html

(0)
上一篇 2021年10月29日
下一篇 2021年10月29日

精彩推荐