在MySQL中,utf8mb4和utf8字符集有什么不同
我已经知道了ASCII 8,UTF-16和UTF-32编码;但是我很好奇utf8mb4编码组与MySQL服务器中定义的其他编码类型有什么不同。
使用 utf8**?**而不是有什么特别的好处/建议
发布于 2015-05-06 18:47:52
UTF-8是一种可变长度编码。在使用UTF-8的情况下,这意味着存储一个码点需要一到四个字节。然而,MySQL的名为"utf8“(别名为"utf8mb3")的编码,每个代码点最多只能存储三个字节。
因此字符集"utf8"/"utf8mb3“不能存储所有的Unicode代码点:它只支持从0x000到0xFFFF的范围,也就是所谓的"Basic Multilingual Plane”。另请参见Comparison of Unicode encodings。
这是(上一个版本的同一页面) the MySQL documentation对此的评论:
名为utf8/utf8mb3的字符集每个字符最多使用三个字节,并且仅包含BMP字符。从MySQL 5.5.3开始,utf8mb4字符集每个字符最多使用四个字节,支持补充字符:
因此,如果您希望列支持存储位于BMP之外的字符(而且您通常希望这样做),比如emoji,那么可以使用"utf8mb4“。另请参见What are the most common non-BMP Unicode characters in actual use?。
发布于 2016-10-31 20:28:15
utf8mb4字符集非常有用,因为现在我们不仅需要支持存储语言字符,还需要支持存储符号、新引入的表情符号等。
马蒂亚斯·拜恩斯在How to support full Unicode in MySQL databases上的一篇不错的读物也可以说明这一点。
发布于 2018-09-15 02:25:28
utf8mb4:使用对Unicode字符集进行UTF-8编码每个character.utf8mb3:使用一到四个字节使用对Unicode字符集进行UTF-8编码每个字符使用一到三个字节。在MySQL中,utf8目前是utf8mb3的别名,已被弃用,并将在未来的MySQL版本中删除。在这一点上,utf8 将成为 utf8mb4的引用。
因此,不管别名是什么,您都可以有意识地为自己设置一个utf8mb4编码。
为了完整地回答这个问题,我想在下面添加 @WilliamEntriken's 注释(也取自手册):
若要避免对
utf8含义的歧义,请考虑为字符集引用显式指定utf8mb4,而不是utf8。
https://stackoverflow.com/questions/30074492
复制相似问题