mysql中utf8和utf8mb4差距转载
原创MySQL在5.5.3添加此项后utf8mb4的编码,mb4就是most bytes 4含义,专门设计为与四字节兼容unicode。好在utf8mb4是utf8除了改变编码之外utf8mb4不需要其他转换。当然,为了节省空间,它通常被使用。utf8够了。
2.内容描述
它说,自从utf8可以保存大多数汉字,那为什么要用它utf8mb4呢? 原来mysql支持的 utf8 最大编码字符长度为 3 字节(如果遇到)。 4 插入字节的宽字符时出现异常。三个字节 UTF-8 最大能量编码 Unicode 字符是 0xffff,也就是 Unicode 中的基本多语言平面(BMP)也就是说,不在基本多文本平面中的任何内容。 Unicode字符,不能全部使用 Mysql 的 utf8 字符集存储。包括…在内 Emoji 表情(Emoji 是一个特别的 Unicode 编码,常见于 ios 和 android 手机上)、和许多不常用的汉字,以及任何新的 Unicode 字符等等。
3.问题的根本原因
最初的 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。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除