utf8 字符集表示一个字符需要使用 1 ~ 4 个字节,但是我们经常使用的一些字符使用 1 ~ 3 个字节就可以表示了,比如中文 “我” 占用 3 个字节。而字符集表示一个字符所用的最大字节长度,在某些方面会影响系统的存储和性能,所以设计 MySQL 的设计者定义了两个概念:
utf8mb3:阉割过的 utf8 字符集,只使用 1 ~ 3 个字节表示字符
utf8mb4:正宗的 utf8 字符集,使用 1 ~ 4 个字节表示字符
在 MySQL 中 utf8 是 utf8mb3 的别名,所以之后在 MySQL 中提到 utf8 就意味着使用 1 ~ 3 个字节来表示一个字符。如果大家有使用 4 字节编码一个字符的情况,比如存储一些 emoji 表情,使用 utf8mb4