广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中utf8和utf8mb4编码的具体区别是什么
  • 336
分享到

MySQL中utf8和utf8mb4编码的具体区别是什么

2024-04-02 19:04:59 336人浏览 薄情痞子
摘要

下文给大家带来Mysql中utf8和utf8mb4编码的具体区别是什么有关内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完mysql中utf8和utf8mb4编码

下文给大家带来Mysql中utf8和utf8mb4编码的具体区别是什么有关内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完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/35915.html(转载时请注明来源链接)

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

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

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

下载Word文档
猜你喜欢
  • MySQL中utf8和utf8mb4编码的具体区别是什么
    下文给大家带来MySQL中utf8和utf8mb4编码的具体区别是什么有关内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL中utf8和utf8mb4编码...
    99+
    2022-10-18
  • mysql中utf8和utf8mb4之间有什么区别
    小编给大家分享一下mysql中utf8和utf8mb4之间有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、简介MyS...
    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什么区别?
  • MYSQL中#和$的区别是什么
    小编给大家分享一下MYSQL中#和$的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!他们之间的区别用最直接的话来说就是...
    99+
    2022-10-18
  • MySQL中“:=”和“=”的区别是什么
    小编给大家分享一下MySQL中“:=”和“=”的区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!=只有在set和upda...
    99+
    2022-10-18
  • mysql中in和exists的区别是什么
    这篇文章主要介绍mysql中in和exists的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!exists和in的区别有:in是把外表和内表做hash连接,先查询内表;ex...
    99+
    2022-10-18
  • mysql中exists 和in的区别是什么
    今天就跟大家聊聊有关mysql中exists 和in的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  MySQL中in和exists的性...
    99+
    2022-10-18
  • mysql中int和bigint的区别是什么
    这篇文章将为大家详细讲解有关mysql中int和bigint的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  1 bytes = 8 bit ,...
    99+
    2022-10-18
  • Mysql中 InnoDB和MyISAM的区别是什么
    本篇文章给大家分享的是有关Mysql中 InnoDB和MyISAM的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 Inn...
    99+
    2022-10-18
  • MySQL 中 InnoDB 和 MyISAM 的区别是什么
    今天就跟大家聊聊有关MySQL 中 InnoDB 和 MyISAM 的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  InnoDB 和 ...
    99+
    2022-10-18
  • mysql中的Cache和Buffer的区别是什么
    mysql中的Cache和Buffer的区别是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mysql Cache和Buffer区别有...
    99+
    2022-10-18
  • Mysql中NULL和Empty String的区别是什么
    这期内容当中小编将会给大家带来有关Mysql中NULL和Empty String的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。create tabl...
    99+
    2022-10-18
  • MySQL中mysql_store_result() 和 mysql_use_result() 函数的区别是什么
    这篇文章给大家介绍MySQL中mysql_store_result() 和 mysql_use_result() 函数的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。函数my...
    99+
    2022-10-18
  • Mysql中tinyint(1)和tinyint(4)的区别是什么
    这篇文章主要介绍了Mysql中tinyint(1)和tinyint(4)的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. varchar(M)和数值类...
    99+
    2023-06-29
  • MySQL中int(10)和int(11)的区别是什么
    这篇文章主要介绍了MySQL中int(10)和int(11)的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL中int(10)和int(11)的区别是什么文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-05
  • mysql中int、bigint、smallint和tinyint的区别是什么
    在MySQL中,int、bigint、smallint和tinyint是不同的整数数据类型,它们之间的区别如下:1. int:int...
    99+
    2023-08-15
    mysql
  • MySQL中char、varchar和text三者的区别是什么
    今天就跟大家聊聊有关MySQL中char、varchar和text三者的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体说明:char:...
    99+
    2022-10-18
  • Java编程语言中sleep()和yield()的区别是什么
    这篇文章主要讲解了“Java编程语言中sleep()和yield()的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java编程语言中sleep()和yield()的区别是什么”吧...
    99+
    2023-06-17
  • Mysql中存储过程和函数的区别是什么
    这篇文章主要介绍了Mysql中存储过程和函数的区别是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。数据库设计三范式:第一范式:数据库表的每一...
    99+
    2022-10-18
  • mysql中where和having子句的区别是什么
    本篇文章为大家展示了mysql中where和having子句的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。having的用...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作