上一篇                     
               
			  如何查看MySQL数据库字符集?
- 数据库
- 2025-06-09
- 4718
 要查看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),路径示例: 
- 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后执行:
STATUS; -- 或 s
输出关键信息:

Server characterset:    utf8mb4  
Db     characterset:    utf8mb4  
Client characterset:    utf8mb4  
Conn.  characterset:    utf8mb4  不同层级字符集优先级说明
MySQL字符集按层级继承:
- 服务器级 → 数据库级 → 表级 → 字段级
- 未指定时,下级继承上级设置。
- 字段级设置优先级最高,可覆盖全局规则。
常见字符集推荐
| 字符集 | 适用场景 | 
|---|---|
| utf8mb4 | 支持所有Unicode字符(如emoji) | 
| utf8 | 旧兼容(不推荐,缺失部分字符) | 
| latin1 | 西欧语言(易导致中文乱码) | 
最佳实践:统一使用
utf8mb4+utf8mb4_unicode_ci(更精准的排序规则)。
排查乱码问题技巧
- 检查客户端连接字符集(如Navicat、PHP的SET NAMES utf8mb4)。
- 确保建表语句显式指定字符集: CREATE TABLE my_table ( id INT, content VARCHAR(100) COLLATE utf8mb4_unicode_ci ) DEFAULT CHARSET=utf8mb4; 
- 验证数据写入时的编码是否与字段字符集一致。
| 方法 | 适用场景 | 
|---|---|
| SQL查询 | 精准查看各级字符集(推荐) | 
| 配置文件 | 修改或验证服务器默认设置 | 
| 命令行 STATUS | 快速检查连接环境 | 
️ 重要提示:修改已有数据的字符集需用
ALTER TABLE转换,并提前备份!
掌握这些方法,可确保数据库存储与显示一致,避免乱码问题,若需修改字符集,参考官方文档操作流程。
引用说明:
- MySQL 8.0官方文档:Character Sets and Collations
- 字符集选择指南:UTF-8 vs UTF8MB4
 
 
 
			 
			 
			