Mysql Character
文章目录
Mysql 的字符集
Character Set 是存储字符集
Collation 是排序字符集
Character Set
utf8
, utf8mb4
选择
- MySQL里实现的utf8最长使用3个字节,也就是只支持到了 Unicode 中的 基本多文本平面(U+0000至U+FFFF),包含了控制符、拉丁文,中、日、韩等绝大多数国际字符,但并不是所有,最常见的就算现在手机端常用的表情字符 emoji和一些不常用的汉字,如 “墅” ,这些需要四个字节才能编码出来。
- MySQL里实现的utf8mb4最长使用4个字节,U+0000至U+FFFF 用3个字节,0x10000至0x10FFFF 用4个字节
utf8mb4 可以看作是 utf8 的超集,U+0000至U+FFFF 的字符同样是占用3个字节,因此通常情况下设置为 utf8mb4
Collation
utf8mb4_unicode_ci
, utf8mb4_general_ci
选择
- 唯一的区别是在 排序和比较方面
- 排序(比较)准确性
- utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序
- utf8mb4_general_ci 没有实现Unicode排序规则,在遇到某些特殊语言或字符是,排序结果可能不是所期望的。
- 性能
- utf8mb4_general_ci 理论上更快,提升意义不大
推荐使用 utf8mb4_unicode_ci
参考
http://seanlook.com/2016/10/23/mysql-utf8mb4/
https://dev.mysql.com/doc/refman/5.7/en/charset-unicode-utf8mb4.html