为何不要在MySQL中使用UTF-8编码方式详解
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,MySQL的UTF-8编码方式MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
空数据库是指
这群人 服务器
上海app软件开发有几家
云计算环境中计算机网络安全研究
杭州手机软件开发公司哪家好
ios 服务器选择
试验机软件开发
陈李舟网络安全
服务器外网安全级别
互苗网络安全课观后感
坦克世界哪个服务器的
什么是网络安全模式开声音
网络安全和计科哪个考研难
技术服务与软件开发的区别
苏州江苏高性能服务器规格
邢台天气预报软件开发
工商管理与计算机网络技术
网络安全员培训简报
大富翁h5一键端 数据库
pda手持终端软件开发工具
语音服务器带宽
昆明精益管理软件开发
旧苹果手机无法验证服务器身份
互联网科技公司如何赚钱
企业网中常见的服务器应用有
数据库在会计领域发展前景
与服务器配置向导
数据库 2008备份还原
黑龙江安防时钟监控网管服务器
服务器上redis如何打开