MySQL存储表情时报java.sql.SQLException:Incorrectstringvalue:‘\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...’错误怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


当前题目:MySQL存储表情时报java.sql.SQLException:Incorrectstringvalue:‘\xF0\x9F\x92\xA9\x0D\x0A...’错误怎么办
URL标题:http://scyanting.com/article/ihcsoi.html