当前位置:首页 > 数据库 > 正文

如何查看MySQL数据库字符集?

要查看MySQL 数据库字符集,使用SHOW CREATE DATABASE 数据库名命令,结果中DEFAULT CHARACTER SET即为字符集,也可执行SELECT @@character_set_database;查询当前库字符集,表级字符集用SHOW TABLE STATUS。

为什么需要关注MySQL字符集?

字符集(Character Set)直接决定了数据库如何存储和显示文本数据(如中文、特殊符号),错误的字符集设置会导致乱码、数据损坏、查询异常等问题,掌握查看方法,是优化数据库和保障数据完整性的基础步骤。


通过SQL命令查看(推荐)

查看数据库字符集

SELECT SCHEMA_NAME '数据库名称', DEFAULT_CHARACTER_SET_NAME '默认字符集', DEFAULT_COLLATION_NAME '默认排序规则' FROM information_schema.SCHEMATA;

输出示例

+--------------------+-------------------+-------------------+ | 数据库名称 | 默认字符集 | 默认排序规则 | +--------------------+-------------------+-------------------+ | my_database | utf8mb4 | utf8mb4_general_ci| | test_db | latin1 | latin1_swedish_ci | +--------------------+-------------------+-------------------+

查看数据表的字符集

SELECT TABLE_NAME '表名', TABLE_COLLATION '排序规则' FROM information_schema.TABLES WHERE TABLE_SCHEMA = '你的数据库名'; -- 替换为实际数据库名

查看字段级字符集

SELECT TABLE_NAME '表名', COLUMN_NAME '字段名', CHARACTER_SET_NAME '字符集', COLLATION_NAME '排序规则' FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '你的数据库名' AND CHARACTER_SET_NAME IS NOT NULL;

查看MySQL服务器全局设置

SHOW VARIABLES LIKE 'character_set_server'; -- 服务器默认字符集 SHOW VARIABLES LIKE 'collation_server'; -- 服务器默认排序规则


通过MySQL配置文件查看

配置文件通常为 my.cnf(Linux)或 my.ini(Windows),路径示例:

如何查看MySQL数据库字符集? 第1张

  • Linux: /etc/mysql/my.cnf
  • Windows: C:ProgramDataMySQLMySQL Server 8.0my.ini

查找以下配置项:

[mysqld] character-set-server = utf8mb4 # 服务器级默认字符集 collation-server = utf8mb4_unicode_ci # 默认排序规则 [client] default-character-set = utf8mb4 # 客户端连接字符集

注意:修改配置文件需重启MySQL生效。

如何查看MySQL数据库字符集? 第2张

命令行工具快速查询

登录MySQL后执行:

STATUS; -- 或 s

输出关键信息

Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4


不同层级字符集优先级说明

MySQL字符集按层级继承:

如何查看MySQL数据库字符集? 第3张

  1. 服务器级数据库级表级字段级
  2. 未指定时,下级继承上级设置。
  3. 字段级设置优先级最高,可覆盖全局规则。


常见字符集推荐

字符集 适用场景
utf8mb4 支持所有Unicode字符(如emoji)
utf8 旧兼容(不推荐,缺失部分字符)
latin1 西欧语言(易导致中文乱码)

最佳实践:统一使用 utf8mb4 + utf8mb4_unicode_ci(更精准的排序规则)。


排查乱码问题技巧

  1. 检查客户端连接字符集(如Navicat、PHP的SET NAMES utf8mb4)。
  2. 确保建表语句显式指定字符集: CREATE TABLE my_table ( id INT, content VARCHAR(100) COLLATE utf8mb4_unicode_ci ) DEFAULT CHARSET=utf8mb4;
  3. 验证数据写入时的编码是否与字段字符集一致。


方法 适用场景
SQL查询 精准查看各级字符集(推荐)
配置文件 修改或验证服务器默认设置
命令行STATUS 快速检查连接环境

重要提示:修改已有数据的字符集需用ALTER TABLE转换,并提前备份!

掌握这些方法,可确保数据库存储与显示一致,避免乱码问题,若需修改字符集,参考官方文档操作流程。


引用说明

0