百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> 为何不要在MySQL中运用UTF-8编码方式
分享文章到:

为何不要在MySQL中运用UTF-8编码方式

发布时间:09/01 来源:未知 浏览: 关键词:

MySQL的UTF-8编码方式

MySQL 从 4.1 版本开端支撑 UTF-8,也就是 2003 年,然而当前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才培养了MySQL中的UTF-8与我们日常开发中的UTF-8不一致,从到致使了些问题。MySQL的UTF-8只支撑每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。

问题复现

有数据库表如下:utf8编码方式

下载 (2).jpg

往数据库存一笔记录:

@Test public 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吧。

更多MySQL相关技术文章,请拜访MySQL教程栏目停止学习!

以上就是为什么不要在MySQL中使用UTF-8编码方式的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板