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

如何查看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),路径示例:

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

查找以下配置项:

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

[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字符集按层级继承:

  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转换,并提前备份!

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


引用说明

  • MySQL 8.0官方文档:Character Sets and Collations
  • 字符集选择指南:UTF-8 vs UTF8MB4
0