MySQL5.5.3是道分水岭

编码

代码点(Code Point):Unicode是属于编码字符集(CCS)的范围。Unicode所做的事情就是将我们需要表示的字符表中的每个字符映射成一个数字,这个数字被称为相应字符的码点(code point)。例如“严”字在Unicode中对应的码点是U+0x4E25

相同点

  • 相同代码值
  • 相同编码
  • 相同长度

UTF8mb3

  • 变长编码
  • 存储一个代码点需要1-3字节
  • 不能存储所有Unicode代码点,只支持0x000到0xFFFF,也就是BMP(Basic Multilingual Plane)

BMP:基本多文种平面,也成第零平面(Plane 0),是Unicode中的一个编码区段,几乎包含现代语言的字符,和大量符号。目的是支持对于书写使用的先前字符集的统一。

UTF8mb4

  • 补充字符
    • 支持存储例如emoji
  • 存储一个代码点需要4字节
  • MySQL5.5.3+

BTW, MariaDB也应该使用UTF8mb4

排序规则

ci:case insensitive,大小写不敏感

cs:case sensitive,大小写不敏感

bin:二进制,大小写敏感

utf8mb4_general_ci

  • 校对速度快,准确度稍差

  • 一般语言用

  • 不支持扩展

utf8mb4_unicode_ci

  • 校对速度稍慢,准确度高

  • 含有德语、法语或俄语

  • 支持扩展
    • 把一个字母看作与其它字母组合相等