在MySQL数据库运维和开发过程中,了解实例支持的所有字符集是基础且重要的操作,不同的字符集适配不同的语言和存储需求,错误的字符集选择可能导致乱码等问题。目前有两种主流的查询方式可以获取MySQL支持的所有字符集信息。

使用SHOW CHARSET语句查询
SHOW CHARSET是MySQL提供的专门用于查看字符集信息的快捷语句,执行后会返回当前实例支持的所有字符集的基础信息,包括字符集名称、对应的默认排序规则、字符集描述以及每个字符占用的最大字节数。
执行该语句的代码如下:
-- 查询MySQL支持的所有字符集 SHOW CHARSET;
执行后返回的结果包含四个字段,具体含义如下:
- Charset:字符集的名称,比如utf8、utf8mb4、latin1等
- Description:字符集的描述信息,说明该字符集的适用场景
- Default collation:该字符集对应的默认排序规则
- Maxlen:该字符集中单个字符占用的最大字节数,比如utf8mb4的Maxlen为4
通过information_schema系统表查询
information_schema是MySQL的系统数据库,其中存储了所有数据库的元数据信息,字符集的相关信息存储在information_schema.CHARACTER_SETS表中,通过该表可以查询到更全面的字符集元数据,也支持自定义过滤条件。
基础查询语句如下:
-- 通过系统表查询所有支持的字符集 SELECT * FROM information_schema.CHARACTER_SETS;
如果需要筛选特定字符集,可以添加WHERE条件,比如查询名称包含utf8的字符集:
-- 筛选名称包含utf8的字符集
SELECT
CHARACTER_SET_NAME,
DEFAULT_COLLATE_NAME,
DESCRIPTION,
MAXLEN
FROM information_schema.CHARACTER_SETS
WHERE CHARACTER_SET_NAME LIKE '%utf8%';
该查询结果和SHOW CHARSET的返回内容基本一致,区别在于字段名称略有不同,系统表中的字段对应关系如下:
| 系统表字段名 | SHOW CHARSET返回字段名 | 含义 |
|---|---|---|
| CHARACTER_SET_NAME | Charset | 字符集名称 |
| DEFAULT_COLLATE_NAME | Default collation | 默认排序规则 |
| DESCRIPTION | Description | 字符集描述 |
| MAXLEN | Maxlen | 单字符最大字节数 |
两种查询方式的差异
SHOW CHARSET语句更加简洁,适合快速查看所有字符集的基础信息,不需要了解系统表结构即可使用。而通过information_schema系统表查询的方式更加灵活,支持自定义查询字段、添加过滤条件、关联其他系统表查询更多信息,适合需要定制化查询的场景。
注意事项
不同版本的MySQL支持的字符集可能存在差异,比如MySQL 8.0版本默认字符集为utf8mb4,而更早的版本默认字符集为latin1。如果需要确认当前实例的具体字符集支持情况,建议直接使用上述两种方式查询,而不是依赖版本默认配置。
另外,修改数据库、表或者字段的字符集时,需要确保目标字符集在当前实例的支持列表中,否则会执行失败,此时也可以通过上述查询语句确认目标字符集是否可用。
MySQL字符集information_schemaSHOW_CHARSETSQL查询修改时间:2026-07-15 10:12:10