数据库中的字符集与排列顺序

不同版本的数据库字符集与排列顺序。

字符集介绍

utf8(也称utf8mb3),utf8mb4

我们新建mysql数据库的时候,需要指定数据库的字符集,一般我们都是选择utf8(也称utf8mb3)这个字符集,但是还会又一个utf8mb4这个字符集。

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了,总的来说:

  • utf8下,1字符=3字节
  • utf8mb4下,1字符=4字节

utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。可以简单的理解utf8mb4是目前最大的一个字符编码,支持任意文字。

排列顺序

新建数据库时一般选用 utf8_general_ci 就可以

utf8_genera_ci:不区分大小写,即大小写不敏感。

utf8_bin:将字符串中的每一个字符用二进制数据存储,区分大小写。

utf8_general_cs:区分大小写,即大小写敏感

utf8_unicode_ci:不能完全支持组合的记号。

utf8mb4那么对应的就是utf8mb4_general_ci

对应关系

utf8→utf8_general_ci

utf8mb4→utf8mb4_0900_ai_ci

Bug记录

MySQL执行SQL文件出现【Unknown collation: ‘utf8mb4_0900_ai_ci’】的解决方案

问题分析:mysql版本不一样

解决方案

  • 方案一:升级mysql版本
  • 方案二:打开需要导入的sql文件,打开sql脚本,把sql脚本中的所有 utf8mb4_0900_ai_ci 或者 utf8_0900_ai_ci 替换为utf8_general_ci,同时将utf8mb4替换为utf8。全部替换后重新执行sql文件即可。

数据库中的字符集与排列顺序
http://wahoyu.xyz/2023/05/26/DataBaseUTF8/
作者
Wahoyu
发布于
2023年5月26日
许可协议