在世界现代web应用程序中,它是越来越重要的支持各种各样的语言和字符集。随着全球化的兴起,需要存储和处理多语言数据已成为必不可少的。MySQL,其中最流行的关系数据库管理系统,意识到这种需求,介绍了utf8mb4 8.0版本的改变。在这篇文章中,我们将探索utf8mb4和它的优点在MySQL 8.0中,实例的支持。

理解utf8mb4

之前到的好处,让我们澄清utf8mb4代表什么。在MySQL utf8 "指的是一个支持Unicode字符集的字符编码使用每个角色最多三个字节。然而,原始utf8实现在MySQL中并不涵盖所有Unicode字符。utf8mb4,另一方面,是一个修改版的utf8,支持完整的Unicode字符集,包括emojis和其他补充字符,通过每个角色最多四个字节。

MySQL中的原始utf8实现只支持角色的基本语言使用者飞机(BMP),大约90%的Unicode字符。utf8mb4,另一方面,支持整个Unicode字符集,包括emojis和其他补充字符。它通过使用最多每四个字节字符而不是使用的三个字节utf8。

这是一个表显示的区别utf8和utf8mb4:

功能 use utf8 utf8mb3 utf8mb4
最大的每个字符的字节数 3 3 4
人物的支持 基本语言平面(BMP) 骨形态发生蛋白 BMP +补充平面
在MySQL的默认 是的 是的 是的(因为MySQL 8.0)
弃用状态 弃用 弃用 不弃用

请注意:从历史上看,MySQL使用字符集utf8作为utf8mb3别名。然而,从MySQL 8.0.28 utf8mb3只用于显示报表的输出和信息模式表指字符集。在未来,use utf8 utf8mb4有望成为一个参考。为了避免任何歧义,建议明确指定字符集utf8mb4指。

正如你所看到的,主要区别utf8, utf8mb3, utf8mb4每个字符的最大字节数。use utf8, utf8mb3只能存储字符的基本语言平面(BMP),而utf8mb4还可以存储字符的补充。这意味着utf8mb4可以支持更大范围的字符,包括emojis、数学符号和其他特殊字符。

三个字符集的另一个区别是他们的MySQL的默认状态。utf8是默认的字符集,MySQL 5.7和更早,虽然utf8mb3 MySQL 8.0中是默认的字符集。然而,utf8mb4 MySQL的默认字符集8.0.28后来。

最后,utf8 MySQL 8.0和utf8mb3弃用。这意味着他们最终会从MySQL,所以推荐使用utf8mb4代替。

所以,如果你需要存储所有的Unicode字符,包括emojis和其他补充字符,那么你应该使用utf8mb4。但是,如果你只需要存储字符从BMP,然后utf8可能就足够了。

这是一个例子的比较utf8, utf8mb4使用MySQL表和查询:

MySQL 5.7

表:

将三行插入用户表,包括emoji。

遇到的错误消息,“错误1366 (HY000):不正确的字符串值:“xF0x9Dx8Cx86”列在第三行“名称”,“表明,有一个问题所使用的字符编码为“名称”列在“用户”表中。错误发生在试图插入Unicode字符”到“名称”列。

MySQL 8.0

表:

这个表使用的utf8mb3字符集的名字电子邮件列。这意味着从BMP表可以存储所有字符,但它不能存储emojis或其他补充字符。

查询:

与前面的示例一样,错误消息你遇到,“错误1366 (HY000):不正确的字符串值:“xF0x9Dx8Cx86”列在第三行“名称”,“表明,有一个问题所使用的字符编码为“名称”列在“用户”表中。错误发生在试图插入Unicode字符”到“名称”列。

这个查询将前两行插入用户表。前两行包含简单的文本数据,而第三行包含一个emoji。emoji不会正确地存储在数据库,因为use utf8字符集emojis不能储存。

输出:

从用户选择*;

这个查询将选择的两行用户表。查询的输出将是一个列表的所有行用户表,包括名称、电子邮件、和每个用户的ID。第三行emoji不能存储,和它错误而插入,因为use utf8字符集emojis不能储存。

表:

确保适当的存储emojis,让我们创建表列使用utf8mb4字符集。之后,我们可以继续检查emoji插入工作正常。

查询:

这个表使用utf8mb4字符集的的名字电子邮件列。这意味着表可以存储所有字符的Unicode字符集,包括emojis和其他补充字符。

这个查询将三行插入用户表。前两行包含简单的文本数据,而第三行包含一个emoji。emoji将存储在数据库中正确,因为utf8mb4字符集可以存储emojis。

输出:

从用户选择*;

这个查询将选择的所有行用户表。查询的输出将是一个列表的所有行用户表,包括名称、电子邮件、和每个用户的ID。emoji将存储作为emoji因为utf8mb4字符集可以存储emojis。

结论

如您所见,utf8mb4字符集可以存储所有字符的完整的Unicode字符集,包括emojis和其他补充字符。这是一个不错的选择对于存储复杂的文本数据,文本搜索和比较。utf8字符集,另一方面,只能存储字符从BMP。这意味着它不能存储emojis或其他补充字符。

一般而言,推荐使用utf8mb4所有新的应用程序。这将确保您的数据可以存储和处理正确,无论它包含的字符。

雷竞技下载官网Percona MySQL是最完整,分布稳定、可伸缩的、安全的MySQL开源解决方案,提供企业级的数据库环境最关键业务应用程序…和它的免费使用!

raybetapp2下载

订阅
通知的
客人

0评论
内联反馈
查看所有评论