为何不要在MySQL中使用UTF-8编码方式详解
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,MySQL的UTF-8编码方式MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的
千家信息网最后更新 2024年12月12日为何不要在MySQL中使用UTF-8编码方式详解
MySQL的UTF-8编码方式
MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的UTF-8与我们日常开发中的UTF-8不一致,从到导致了些问题。MySQL的UTF-8只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。
问题复现
有数据库表如下:utf8编码方式
往数据库存一条记录:
@Testpublic void testInsert() { User user = new User(); user.setUsername("\uD83D\uDE00 "); user.setPassword("123456"); userRepo.save(user);}
这里只是部分代码,看不懂没关系,这里是给user表插入一条记录。其中username是\uD83D\uDE00 。
其实\uD83D\uDE00是一个emoji表情。
因为MySQL中utf8字符集只支持三字节UTF-8编码的Unicode范围,而emoji字符属于四字节编码部分,所以程序运行预期是会报错的。运行这段代码:
与预期一致,报错了。
解决问题
虽然MySQL的UTF-8存在缺陷,但是MySQL(包括mariadb)官方却没有修复此bug,而是通过2010年重新发布的"utf8mb4"来支持真正的 UTF-8。因此想要解决此问题,只能够将MySQL数据库设置为utf8mb4字符集才行。
总结
这个问题,也是因为某次保存数据的时候保存了一个emoji表情才发现的。其实最早开始用MySQL的时候,就有发现一个utf8mb4了,但是自己却没有却去了解UTF8和UTF8MB4的区别。通过此次教训,以后使用MySQL就老老实实的设置字符集为utf8mb4吧。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
UTF-8
字符
问题
支持
编码
字节
数据
方式
一致
代码
内容
字符集
数据库
时候
表情
部分
学习
运行
没关系
三个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海计算机软件开发外包
江苏网络安全等保报价
个人网站数据库
天津文件服务器机柜云空间
中国网络安全中心是什么机构
随书光盘数据库的作用
宁南县软云软件开发有限公司
国家级网络安全演练
存储服务器总容量
php服务器后台开发
网络技术有啥岗位呢
服务器硬盘2.4t与1.2t
软件开发企业收入确认分录
有哪些简单的网络安全实验
无人机设计3d软件开发
iis7数据库连接错误
莆田市网络安全改造
华为数据库与数据仓库
软件开发很容易秃顶
医院网络安全周期性巡查报告
软件开发的关键算法
5G网络技术创新校企联培班
无线网络技术需要学什么
柔济广州互联网科技有限公司
凭什么说苹果适合软件开发
调度中心网络安全预案
学习数据库看什么书好
查看网络安全服务价格
华三网络技术大赛报名表填写
莆田市网络安全改造