最近看了一篇文章是关于Mysql中utf-8编码问题的,咱们在Mysql中用到的utf8实际上不是真正的 UTF-8,在Mysql中utf8mb4才是真正的UTF-8。mysql
在有些地方看到说utf8mb4相比于utf8是为了解决emoji(就是咱们聊天的时候笑脸表情)问题,感受这种说法对可是不彻底对。utf8mb4至关于utf8的一个扩展,出现utf8mb4是由于如今Mysql中的utf8已经不能知足咱们对字符编码的需求了。android
Mysql从4.1 版本开始支持 UTF-8,最大字符长度为 3 字节,三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xFFFF,也就是 Unicode 中的基本多文平面(BMP)。也就是说,任何不在基本多文平面的 Unicode字符,都没法使用MySQL原有的 utf8 字符集存储。这些不在BMP中的字符包括哪些呢?最多见的就是Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和一些不经常使用的汉字,以及任何新增的 Unicode 字符等等。因而在MySQL5.5.3版本后就有了utf8mb4,它支持四个字节编码在utf8消耗空间一些,可是它能够支持跟多的字符。ios
因此,在咱们最新设计数据库的时候最好使用utf8mb4字符集,同时使用varchar代替char类型。sql
参考文章:数据库