Mysql JDBC支持utf8mb4编码

2023-11-13

项目中需要在mysql中存储包含emoji表情的字段,使用utf8编码无法解决,因为mysql的utf8实现只有3字节。

为此mysql在5.3+后加入了utf8mb4支持,完全兼容utf8。utf8mb4最多可用4字节存储一个字符,这样就可以处理emoji表情,注意mysql服务端的版本要求utf8mb4的最低mysql版本支持版本为5.5.3+

后来参考了另一篇文章MySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码),将表的编码改为utf8mb4,将mysql url连接串里characterEncoding=UTF-8去掉,改为jdbc:mysql://ali-burst:3306/liebian?serverTimezone=Asia/Shanghai&useUnicode=true

这样数据是插入了,没有报错,但是确是乱码。花了好长时间研究,说是在客户端连接池中设置spring.datasource.init-sql之类的,试了好多,没用。

尝试在mysql命令行客户端手动插入emoji

set names utf8mb4;
insert into test values('��a汉��');
select * from test;

表情成功插入,说明mysql服务端是没问题的
那肯定是应用程序的问题了

排查了好久,上面那个链接仔细看了好几遍,突然注意到版本问题。可能不仅要求服务端要在5.5.3以上,对JDBC驱动也有版本要求。检查pom里mysql驱动版本,5.1.6,真TM坑。
mysql java驱动版本改为5.1.41后,成功插入,无乱码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql JDBC支持utf8mb4编码 的相关文章

  • SQL统计高于和低于平均分的学生人数

    我在下面有一个示例表 我试图获取高于平均分数的学生人数和低于平均分数的学生人数 name subject classroom classarm session first term score first term grade std1 m
  • SQL 检查一组日期是否在指定的日期范围内

    我有一个表 其中保存架构中房间不可用的日期 ROOM ID DATE UNAVAILABLE 我需要一个 sql 查询来检查两个日期范围内是否有可用房间 类似于 Select All rooms that are constantly av
  • MYSQL 查询返回“资源 id#12”而不是它应返回的数值

    不知道为什么 但这返回了错误的值 我正在取回此资源 ID 12 而不是我正在寻找的数值 1 执行此操作的代码是 type SELECT account type from user attribs WHERE username userna
  • 通过货币换算获取每种产品类型的最低价格

    我想选择每种产品类型中最便宜的 包括运费 价格转换为当地货币 最便宜 产品 价格 产品 运费 seller to aud 我的数据库有如下表 PRODUCTS SELLERS id type id seller id price shipp
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • MySQL 全文搜索不适用于某些单词,例如“house”

    我已经在 3 个字段中的一小部分记录上设置了全文索引 也尝试了 3 个字段的组合 并得到了相同的结果 有些单词返回结果很好 但某些单词如 house 和 澳大利亚 不这样做 有趣的是 澳大利亚 和 家乡 这样做 这似乎是奇怪的行为 如果我添
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • Glassfish 4 - JDBC 领域

    Glassfish 4 中的密码加密算法和摘要算法有什么区别 因为Password加密算法不能为空 所以我使用了MD5 Encoding使用了Hex 摘要算法为空 因此默认为 SHA 256 但是 如果我使用 JAAS 制作一个简单的登录应
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐

  • React Draggable 实现拖拽

    React Draggable 是 react 生态中 最好用的拖拽实现库之一 如果你的应用中需要实现拖拽功能 可以尝试用 react draggable 它可以满足多数情况下的拖拽需求 比如一个弹出设置浮窗 可以相互遮挡的容器之类 在所有
  • 计算机2.0培训心得,信息技术应用能力提升培训心得体会两篇

    信息技术应用能力提升培训心得体会两篇 篇一 本月 我进行了 教师信息技术应用能力提升工程 的学习 学习过程中的每一天我都过得非常充实 这次的培训我学习到了很多 每一个视频的内容都非常有意义 有价值 所以 这段时间 我很认真的学习了此次的培训
  • 搭建Spark所遇过的坑

    一 经验 1 Spark Streaming包含三种计算模式 nonstate stateful window 2 kafka可通过配置文件使用自带的zookeeper集群 3 Spark一切操作归根结底是对RDD的操作 4 部署Spark
  • 2017-03-01-为你的Github生成漂亮的徽章和进度条

    原文来自为你的Github README生成漂亮的徽章和进度条 欢迎去博主的博客体验更好的阅读感受 github上常见的徽章标签和进度条 平时在上github的时候看到别人写的精美的README 我总是感到非常的羡慕 近来我也开始使用mar
  • qml 实现展示本地文件系统

    遍历本地文件 qt 提供了很多种便利类来实现本地的文件系统管理 比如QDirModel和QFileSystemModel qml中又提供了FolderListModel 需要包含Qt labs folderlistmodel 2 0 笔者的
  • 所有能反演SIF的卫星以及下载链接

    转载自科学网张园博客 http blog sciencenet cn blog 3430406 1223659 html 目录 SCIAMACHY GOME 2 GOSAT OCO 系列卫星 轨道碳观察者 TanSat TROPOMI 调研
  • 信息隐藏预测算法之MED

    MED median edge detector 第一次MED算法概念被提出的论文 http www hpl hp com techreports 98 HPL 98 193 pdf 下图为图像矩阵的一部分 用此为例来说明MED预测算法 其
  • 升级windows10

    前言 windows7已经被微软停更了 所以说 有些用户想升级到windows10 这篇文章 将会教你升级windows10 下载windows10最新安装包 有一个网址 建议大家收藏好 windwos10最新版本官网下载 点进去链接 往下
  • Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class

    From Java中泛型 Class
  • JavaScript Array 对象

    解释 Array 对象用于在变量中存储多个值 语法 var cars Saab Volvo BMW 第一个数组元素的索引值为 0 第二个索引值为 1 以此类推 数组属性 属性 描述 constructor 返回创建数组对象的原型函数 len
  • 数据库关系模型

    数据库关系模型和SQL 文章目录 数据库关系模型和SQL 安装 SQL语句 DCL DDL 关系 候选键 PRIMARY KEY 主键 Foreign KEY 外键 索引Index B 树 约束Constraint 数据库的三大完整性 域约
  • Lua(9) ——Cocos之_从C++过渡到Lua 文章不错 留下备查

    Lua 9 Cocos之 从C 过渡到Lua 唠叨 现在开始学习Lua了 开始用 Cocos Code IDE 开发cocos2dx的游戏了 可是呢 因为 cocos2dx v3 x 刚刚才出来不久 所以网上的教程大部分都是基于C 版本的
  • JNI 基础

    一 JNI 涉及的名词概念 1 1 JNI Java Native Interface 它是Java平台的一个特性 并不是Android系统特有的 实现Java代码调用C C 的代码 C C 的代码也可以调用Java的代码 1 2 二进制库
  • Spring AOP声明式事务

    Spring AOP声明式事务 Spring AOP声明式事务 传统spring配置 SpringBoot配置 Spring AOP声明式事务 Spring AOP声明式事务可以帮我们自动管理事务 在业务操作前后加入事务开始和提交 根据约定
  • vue :class的动态切换

    直接上代码 class index menu index menu index index 点击事件获取下标和获取不同的值 click menuClick index data return menu img menu index0 men
  • 高德地图-2D转换为3D

    手动添加 同时也需要手动修改倾斜度 var map new AMap Map container zoom 17 pitch 90 center 116 379391 39 861536 viewMode 3D 变成了3d 地图了 buil
  • 新能源锂电设备

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 锂电工艺 1 电芯一工段 2 电芯二工段 3 电芯三工段 4 pack生产 二 一工段设备简要介绍 1 合浆机 2 涂布机 2 辊压机 3 分切机 二 一
  • 利用TortoiseGit给github上面上传项目以及上传项目时经常遇到的错误解决

    我们本地有了一个项目 需要托管到github上面去 之前说过用git命令上传 今天说说如何利用TortoiseGit上传 1 假设我们的java工程放在目录E Test中 那么我们进入Test文件夹中 右键菜单点击 Git Create r
  • 关于protected权限的子类访问方式

    声明为protected权限的成员变量和成员方法 可以被同一包中的所有类和不同包中的子类访问 但是 在实际使用中 不同包中的子类要访问父类中protected权限的成员 却不是那么随意的调用 看几个例子 首先在ch13Test包中定义父类A
  • Mysql JDBC支持utf8mb4编码

    项目中需要在mysql中存储包含emoji表情的字段 使用utf8编码无法解决 因为mysql的utf8实现只有3字节 为此mysql在5 3 后加入了utf8mb4支持 完全兼容utf8 utf8mb4最多可用4字节存储一个字符 这样就可