对于Mysql也算是比较熟悉的了,一般在做项目的时候会默认的把数据库的字符集设置为UTF-8,GBK、或GBK2312,后来为了前后端以及一些js的文件编码格式一致,基本上都统一为了UTF-8格式了。
那么Mysql具体支持哪些字符集格式,我们可以通过登录Mysql数据库后,使用一行命令进行查询,show charset;
我这里使用的是Navicat Premium在数据库进行查询的,也可以通过终端命令行进行对应的查询,查询出来41中字符集。
可以通过查询中看到针对UTF-8的字符集还有两种不同的字符集,分别为utf-8和utf8mb4,那么这两种字符集有什么区别呢。
这里我们就需要先简单说下UTF,UTF(Unicode Tranformation Format)是Unicode的其中一个使用方式,即把Unicode转做某种格式的意思,包括UTF-8,UTF-16,UTF-32。
UTF-8 是一种变长编码方式,用1到6个字节编码Unicode字符,又称万国码,那么UTF-8MB4 是对 UTF-8 的扩展,它支持更广泛的字符集范围,也就是说UTF-8MB4 可以表示 Unicode 字符集中的所有字符,并且针对一些不常见的辅助符号和 Emoji等都是支持的,在大多数情况下UTF-8是足够使用的,少数的情况中财会用到UTF-8mb4。
关于mysql对Emoji表情的支持可以参考我同事写的另一篇文章,除此之外在图上还可以看到UTF字符集有utf16 utf32,UTF-16使用一个或两个未分配的16位代码单元的序列对Unicode代码点进行编码。UTF-32即将每一个Unicode代码点表示为相同值的32位整数。