java向MySQL数据库储存表情包的那些事儿

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 相信很多小朋友都遇到过这样一个问题:将表情包插入到mysql数据库中表的一个字段中,总是报错,无法找到解决问题的方法,我之前也没有遇到这个问题,可能是我的开发时间少了,没有碰到过;但是今天,客户在对项目进行测试使用的时候,客户使用微信登录小程序,一直报错,最后项目总监找到我让我帮忙处理,然后我进行了一系列操作......

mysql使使

org.springframework.jdbc.UncategorizedSQLException: 
###Errorupdatingdatabase.  Cause: java.sql.SQLException: Incorrectstringvalue: '\xF0\x9F\x90\xB6'forcolumn'nickname'atrow1###Theerrormayexistincom/zbkj/crmeb/user/dao/UserDao.java (bestguess)
###Theerrormayinvolvecom.zbkj.crmeb.user.dao.UserDao.insert-Inline###Theerroroccurredwhilesettingparameters###SQL: INSERTINTOeb_user  ( account, pwd,        nickname, avatar, phone, sex,           spread_uid, spread_time, user_type,    addres )  VALUES  ( ?, ?,        ?, ?, ?, ?,           ?, ?, ?,    ? )
###Cause: java.sql.SQLException: Incorrectstringvalue: '\xF0\x9F\x90\xB6'forcolumn'nickname'atrow1

       怀sql'\xF\x9F\x90\xB6'"nickname"emojiemoji线utf8mb4~~

       bugutf8mb4emoji

       ~~~~

jdbcyml

   便线......

#设置数据库支持emoj表情包
spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
spring.datasource.dbcp2.connection-init-sqls=SET nickName utf8mb4

pom.xml

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-dbcp2</artifactId><version>2.1.1</version><scope>runtime</scope></dependency>

javaemoji

   ~使JavaEmojiConverter

   mven

<dependency><groupId>com.github.binarywang</groupId><artifactId>java-emoji-converter</artifactId><version>0.1.1</version></dependency>

   

privatestaticEmojiConverteremojiConverter=EmojiConverter.getInstance();
/*** 带有表情的字符串Emoji转义为unicode,类似🐶。* emoji--->unicode字符串** @param emoji* @return*/publicStringemojiConverter2Html(Stringemoji) {
Stringresult=null;
if (null!=emoji&&emoji.length() >0) {
result=emojiConverter.toHtml(emoji);
        }
returnresult;
    }
/*** 将emojiStr转为 带有表情的字符* unicode--->emoji* @param emojiStr* @return*/privateStringemojiConverter2Unicode(StringemojiStr) {
Stringresult=null;
if (null!=emojiStr&&emojiStr.length() >0) {
result=emojiConverter.toUnicode(emojiStr);
        }
returnresult;
    }
/*** 带有表情的字符串Emoji转义为关键字,类似":dog:"** @param str* @return*/publicstaticStringemojiConverter2Alias(Stringstr) {
Stringresult=null;
if (null!=str&&str.length() >0) {
result=emojiConverter.toAlias(str);
        }
returnresult;
    }

jackson~~

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
自然语言处理 Java 关系型数据库
Java mysql根据很长的富文本如何自动获取简介
通过使用Jsoup解析富文本并提取纯文本,然后根据需要生成简介,可以有效地处理和展示长文本内容。该方法简单高效,适用于各种应用场景。希望本文对您在Java中处理富文本并生成简介的需求提供实用的指导和帮助。
29 14
|
2天前
|
自然语言处理 Java 关系型数据库
Java mysql根据很长的富文本如何自动获取简介
通过使用Jsoup解析富文本并提取纯文本,然后根据需要生成简介,可以有效地处理和展示长文本内容。该方法简单高效,适用于各种应用场景。希望本文对您在Java中处理富文本并生成简介的需求提供实用的指导和帮助。
22 9
|
29天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
128 26
|
2月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
149 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
1月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
2月前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
61 2
|
2月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
2月前
|
Java Android开发
Eclipse 创建 Java 包
Eclipse 创建 Java 包
36 1
|
3天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
39 17
|
14天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者