热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql数据库存储位置(最令人反感的emoji表情)

utf8mb4是utf8的超集,mb4就是mostbytes4的意思,专门用来兼容四字节的Unicode,MySQL在5.5.3之后增加了utf8mb4的编码。MySQL支持的ut


00-1010在最近的项目中存储表情包时报告了一个错误:


###原因: Java . SQL . Sqlexception :第1行的列“column1”的字符串值: '\xF0\x9F\x98\x81 '不正确


;未分类的SQLExceptionSQL状态[HY000];错误代码[1366];第1行“column1”列的字符串值:“\ xF0 \ x9F \ x98 \ x81”不正确;嵌套异常为java.sql.sqlexception :错误的字符串值3360' \ xf0 \ x9f \ x98 \ x81 '位于第[现象]行的列“column1”此问题是由数据库的编码方法引起的。首先,让我们了解utf8和utf8mb4之间的区别:


Utf8通常指UTF-8,这是Unicode的可变长度字符编码。每个字符最多有三个字节,有时称为utf8mb3。


Utf8mb4是utf8的超集,mb4表示大部分字节4,专门用来兼容四个字节的Unicode。MySQL在5.5.3之后增加了utf8mb4编码。


MySQL支持的utf8编码最大字符长度为3字节。如果遇到4字节宽的字符,将会插入一个异常。三个字节的utf8可以编码的最大Unicode字符是0xffff。任何不在基本多文本平面的Unicode字符都不能被MySQL utf8字符集存储,包括表情符号和许多不常见的汉字,以及任何新的Unicode字符等。如果要在MySQL中保存4字节utf8字符,需要使用utf8mb4字符集。从上面我们可以看到,如果要存储表情符号,那么数据库的编码方式需要是utf8mb4。接下来,让我们看看数据库和数据库链接的配置:


查看数据库代码,可以看到数据库代码已经是utf8mb4了。


显示像“character_set_database”这样的变量;


查看项目中数据库链接的配置,我们可以看到设置了复杂的日落=utf8。


JDBC : my SQL :/$ { MySQL . host } : $ { MySQL . port }/$ { MySQL . db }?UseUnicode=true complex sunset=utf8 zero datetime behavior=convert toll注意:无论是使用utf8编码还是utf8mb4,数据库链接url中的complex sunset都设置为utf8(或UTF-8),没有complex sunset=utf8mb4这样的写法。


由于数据库代码是utf8mb4,并且在数据库链接url中设置了复杂的日落=utf8,为什么表情存储仍然会报告错误?


根据研究,原来pom.xml中的mysql-connector-java版本号在起作用。


mysql-connector-java版本支持utf8mb4字符集,如下所示:




项目中使用的mysql-connector-java版本号为5.1.45。从上表中,有必要设置mysql服务器配置文件:


vi /etc/my.cnf


[mysqld]


设置字符集-服务器=utf8mb4后,重启mysql服务,再次运行project服务,就可以将表情包写入数据库表中了。


有时候,我们没有权限修改mysql服务器配置文件,重启mysql服务。此时我们可以将mysql-connector-java版本号更改为5.1.47或以上或8.0.13或以上,然后就可以在不修改mysql服务配置文件的情况下存储表情符号了。


然而,mysql-connector-java的版本号并不是我们想要改变的。它与mysql版本和java版本有关:


Mysql-连接器-java和MySQL版本:




其中,官方推荐MySQL 5.6或以上版本使用connector/j 8.0。


MySQL-连接器-java和java版本:




其中,JRE 1.7要求连接器/J 5.1.21或以上。


至此,大家应该都知道如何解决表情存储的问题了:首先根据mysql版本和Java版本选择对应的mysql-connector-Java,然后根据mysql-connector-java版本选择对应的解决方案。


有时,我们的mysql-connector-java版本太低(可能是历史项目中的mysql或java版本太低)或者我们无法更改mysql服务器配置文件。我们也可以用第二种方案来存储表情符号:前端或后端在书写时对用户数据进行编码和解码,前端或后端在显示时对用户数据中的表情符号进行编码和解码。因为这个解决方案不推荐,我们就不谈了,可以上网。


如果对你有帮助,请点一个“喜欢”,谢谢~


推荐阅读
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文详细介绍了Android系统的四层架构,包括应用程序层、应用框架层、库与Android运行时层以及Linux内核层,并提供了如何关闭Android系统的步骤。 ... [详细]
  • 本文探讨了如何在游戏启动画面中移除广告,特别是在游戏数据加载期间(大约5-6秒)广告会短暂显示的问题。通过调整XML布局和代码逻辑,可以实现广告的延迟加载或完全移除。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • 首部|接口类型_OSI 7层模型 & TCP/IP协议首部封装格式解析
    首部|接口类型_OSI 7层模型 & TCP/IP协议首部封装格式解析 ... [详细]
  • Java 基础数据类型及其存储大小与取值范围
    本文介绍了 Java 中的八种基础数据类型,包括 byte、char、short、int、long、float、double 和 boolean,并详细说明了每种类型的存储大小和取值范围。 ... [详细]
author-avatar
mobiledu2502855037
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有