广告
返回顶部
首页 > 资讯 > 数据库 >mysql中utf8和utf8mb4之间有什么区别
  • 124
分享到

mysql中utf8和utf8mb4之间有什么区别

2024-04-02 19:04:59 124人浏览 安东尼
摘要

小编给大家分享一下Mysql中utf8和utf8mb4之间有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、简介mys

小编给大家分享一下Mysql中utf8和utf8mb4之间有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、简介

mysql在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

二、内容描述

那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 iOSAndroid 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。

三、问题根源

最初的 UTF-8 格式使用一至六个字节,最大能编码 31 位字符。最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。

utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面。

Mysql 中的 utf8 为什么只支持持最长三个字节的 UTF-8字符呢?
我想了一下,可能是因为 Mysql 刚开始开发那会,Unicode 还没有辅助平面这一说呢。那时候,Unicode 委员会还做着 “65535 个字符足够全世界用了”的美梦。Mysql 中的字符串长度算的是字符数而非字节数,对于 CHAR 数据类型来说,需要为字符串保留足够的长。当使用 utf8 字符集时,需要保留的长度就是 utf8 最长字符长度乘以字符串长度,所以这里理所当然的限制了 utf8 最大长度为 3,比如 CHAR(100)  Mysql 会保留 300字节长度。至于后续的版本为什么不对 4 字节长度的 UTF-8 字符提供支持,我想一个是为了向后兼容性的考虑,还有就是基本多文种平面之外的字符确实很少用到。

要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后的才支持(查看版本: select version();)。我觉得,为了获取更好的兼容性,应该总是使用 utf8mb4 而非 utf8.  对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR  替代 CHAR。

以上是mysql中utf8和utf8mb4之间有什么区别的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql中utf8和utf8mb4之间有什么区别

本文链接: https://www.lsjlt.com/news/51198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql中utf8和utf8mb4之间有什么区别
    小编给大家分享一下mysql中utf8和utf8mb4之间有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、简介MyS...
    99+
    2022-10-18
  • MySQL中utf8和utf8mb4编码的具体区别是什么
    下文给大家带来MySQL中utf8和utf8mb4编码的具体区别是什么有关内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL中utf8和utf8mb4编码...
    99+
    2022-10-18
  • mysql数据库中utf8mb4 unicode ci和utf8 general ci什么区别?
    utf8mb4是4个字节。utf8是3个字节。utf8mb4兼容性更好,占用空间更大。 主要从排序准确性和性能两方面看: 准确性utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精...
    99+
    2014-10-18
    mysql数据库中utf8mb4 unicode ci和utf8 general ci什么区别?
  • Shell $*和$@之间有什么区别
    本篇内容主要讲解“Shell $*和$@之间有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Shell $*和$@之间有什么区别”吧!$* 和 $@ 都表示传递给函数或脚本的所有参数,本...
    99+
    2023-06-09
  • Linux中[./]和[/]和[.]之间的区别有什么
    本篇文章为大家展示了Linux中[./]和[/]和[.]之间的区别有什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。/是指根目录,就和Windows的我的电脑那个位置差不多。./是指用户所在的当前...
    99+
    2023-06-28
  • javascript和js之间有什么区别
    这篇文章给大家分享的是有关javascript和js之间有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。javascript和js之间没有区别;js是javascript的简称,意思是一样的。javasc...
    99+
    2023-06-14
  • JDBC和ODBC之间有什么区别
    这篇文章将为大家详细讲解有关JDBC和ODBC之间有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JDBC和ODBC都是API(应用程序编程接口),它帮助客户端的...
    99+
    2022-10-18
  • QueueUserWorkItem() 和 BeginInvoke() 之间有什么区别
    QueueUserWorkItem()和BeginInvoke()都是用来在线程池中执行委托的方法,但它们有一些区别。1. 参数类型...
    99+
    2023-09-26
    区别
  • URL和URI之间有什么区别
    URL和URI之间的区别是:1、URI是用于标识互联网上的资源的字符串序列,而URI并不关注资源的位置,而只关注它的标识符;2、URL提供了关于资源在互联网上位置的详细信息,而URI是一种更广义的概念,不仅涵盖了URL,还包括了用于标识资源...
    99+
    2023-08-14
  • Spring和SpringBoot之间有什么区别
    这篇文章主要介绍了Spring和SpringBoot之间有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Spring是什么?简单地说,Spring框架为开发Java应...
    99+
    2023-06-14
  • sql中delete和truncate之间有什么区别
    这篇文章给大家分享的是有关sql中delete和truncate之间有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在SQL中delete命令和truncate命令都可用...
    99+
    2022-10-18
  • Pop!_OS和Ubuntu之间有什么区别
    这篇文章将为大家详细讲解有关Pop!_OS和Ubuntu之间有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。比较 Ubuntu 和 Pop!_OS发现相似之处可帮助你区分其他差异之处。因此,让我们...
    99+
    2023-06-16
  • vue.js和bootstrap两者之间有什么区别
    这篇文章主要讲解了“vue.js和bootstrap两者之间有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue.js和bootstrap两者之间...
    99+
    2022-10-19
  • HTTP代理和SOCKS之间有什么区别
    这期内容当中小编将会给大家带来有关HTTP代理和SOCKS之间有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Socket security(SOCKS)是一种Internet协议,通过代理服务器...
    99+
    2023-06-25
  • mysql主键索引和普通索引之间有什么区别
    这篇文章主要介绍mysql主键索引和普通索引之间有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存...
    99+
    2022-10-18
  • jsp与javascript之间有什么区别
    这篇文章主要介绍了jsp与javascript之间有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。jsp与javascript区别:1、jsp具有JSTL支持以处理一...
    99+
    2023-06-14
  • ipv4 ipv6 ipv9之间有什么区别
    本篇内容主要讲解“ipv4 ipv6 ipv9之间有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ipv4 ipv6 ipv9之间有什么区别”吧!自从接触到windows 7操作系统以后...
    99+
    2023-06-14
  • PHP5.6与PHP7之间有什么区别
    这篇文章给大家分享的是有关PHP5.6与PHP7之间有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、俩者的区别 1.PHP7.0比PHP5.6性能提升了俩倍。 2.PHP7.0全面一致支持64位。 3...
    99+
    2023-06-14
  • vue挂载和创建之间有什么区别
    在使用Vue.js开发Web应用程序时,Vue实例需要在DOM中挂载以使其生效。这个过程涉及到Vue实例的创建和挂载到DOM上面。其中,Vue实例的创建是指在JavaScript中创建Vue实例的过程,而Vue实例的挂载是指Vue实例将被放...
    99+
    2023-05-18
  • PHP函数和方法之间有什么区别
    今天小编给大家分享一下PHP函数和方法之间有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、PHP函数函数是一组指...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作