数据库中的字符集与排列顺序
不同版本的数据库字符集与排列顺序。
字符集介绍
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/