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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 相信很多小朋友都遇到过这样一个问题:将表情包插入到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~~

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
10月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
5月前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
724 4
MySQL二进制包安装
|
5月前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
621 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
5月前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
586 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
5月前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
2106 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
5月前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
1682 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
|
5月前
|
Oracle 关系型数据库 MySQL
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
本文详细介绍在Rocky、CentOS、AlmaLinux、openEuler等主流Linux系统上,通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,涵盖下载、依赖处理、rpm/yum安装、服务启动、密码设置等关键环节,适用于多种企业级环境部署需求。
1462 0
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
|
5月前
|
存储 关系型数据库 MySQL
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
MySQL是一款开源关系型数据库,高性能、易用、跨平台,支持多种存储引擎,广泛应用于Web开发、企业级应用等领域。本教程介绍其特点、架构及在主流Linux系统中的安装配置方法。
968 0
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
|
6月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
281 13
|
11月前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
434 94

推荐镜像

更多