一、查看所有可用的字符集
1. 使用 `SHOW CHARACTER SET;` 命令
这是最直接的方法,结果清晰,包含四列关键信息:
`Charset`:字符集名称(如 `utf8mb4`)。
`Description`:字符集描述。
`Default collation`:该字符集的**默认校对规则**。
`Maxlen`:该字符集中**单个字符最多占用的字节数**。这是选择字符集的重要依据(例如,`utf8` 的 `Maxlen` 是 3,而 `utf8mb4` 是 4,后者才能存储表情符号)。
2. 查询 `information_schema.character_sets` 系统表
SELECT * FROM information_schema.character_sets;
这种方法更适合通过 SQL 条件进行过滤查询,获取到的信息与 `SHOW CHARACTER SET;` 基本相同。
常用字符集速查:
字符集 | 描述 | 最大字节长度 | 推荐使用场景 |
---|---|---|---|
utf8mb4 | 真正的 UTF-8 Unicode | 4 | 绝对首选,支持所有语言和表情符号(emoji) |
utf8 | 阉割版的 UTF-8 (仅支持基本多文种平面字符) | 3 | 旧系统遗留,不推荐新项目使用 |
gbk | 中文简体 | 2 | 仅处理简体中文的旧系统 |
latin1 | 西欧字符 | 1 | MySQL 5.x 的默认字符集,不推荐 |
ascii | 美国 ASCII | 1 | 仅需存储英文、数字、符号时 |
二、查看特定字符集的校对规则
1. 使用 `SHOW COLLATION` 命令
查看所有校对规则:
SHOW COLLATION;
查看特定字符集(如 `gbk`)的校对规则(**您演示的方法非常常用**):
SHOW COLLATION LIKE 'gbk%';
结果中的关键列:
`Collation`:校对规则名称。
`Charset`:该校对规则对应的字符集。
`Default`:是否为该字符集的默认校对规则(`Yes` / `""`)。
`Compiled`:是否已编译到服务器中。
2. 查询 `information_schema.collations` 系统表
SELECT * FROM information_schema.collations WHERE CHARACTER_SET_NAME = 'gbk';
通过 `WHERE` 条件过滤,效果与 `SHOW COLLATION LIKE 'gbk%';` 相同。
三、理解并测试校对规则(您提供的例子非常经典)
使用 gbk_chinese_ci (case insensitive) 校对规则比较,不区分大小写
SELECT CASE WHEN 'A' COLLATE gbk_chinese_ci = 'a' COLLATE gbk_chinese_ci THEN 1 ELSE 0 END;
结果: 1 (相等)
使用 gbk_bin (binary) 校对规则比较,区分大小写
SELECT CASE WHEN 'A' COLLATE gbk_bin = 'a' COLLATE gbk_bin THEN 1 ELSE 0 END;
结果: 0 (不相等)
四、查看当前服务器、数据库、连接的字符集/校对规则设置
查看字符集设置:
SHOW VARIABLES LIKE 'character_set_%';
查看校对规则设置:
SHOW VARIABLES LIKE 'collation_%';
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程