mysql字符集需在服务器、数据库、表、列及连接五层统一配置;修改时应按层级选择对应命令,注意备份及乱码风险,并确保客户端连接指定utf8mb4。

MySQL 表的字符集由表本身、列定义以及数据库默认字符集共同决定,修改时需明确目标层级(库、表、列),并注意已有数据是否需要转换。
查看当前字符集设置
执行以下命令确认当前环境的字符集配置:
- 查看数据库默认字符集:SHOW CREATE DATABASE db_name;
- 查看表字符集和排序规则:SHOW CREATE TABLE table_name;
- 查看列的字符集:SHOW FULL COLUMNS FROM table_name;
- 查看服务器级默认值:SHOW VARIABLES LIKE 'character_set%'; 和 SHOW VARIABLES LIKE 'collation%';
修改数据库默认字符集
仅影响后续新建的表,不改变已有表:
樱桃企业网站管理系统全DIV+CSS模板,多浏览器适应,完美兼容IE6-IE8,火狐,谷歌等符合标准的浏览器,模板样式集中在一个CSS样式中,内容与样式完全分离,方便网站设计人员开发模板与管理。系统较为安全,以设计防注入,敏感字符屏蔽,适合新手自己操作修改。新闻,产品,单页独立关键字设计,提高搜索引擎收录。 后台地址:admin/login.asp 后台账户:admin 密码:admin (
- 使用 ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
- 确保 my.cnf 或 my.ini 中已配置全局默认项(重启生效):
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
修改已有表的字符集
推荐使用 ALTER TABLE ... CONVERT TO,它会同时更新表结构和已有数据的编码:
- ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 若只想改表默认字符集(不影响现有列和数据),用:
ALTER TABLE table_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 注意:执行前建议备份;如果原数据含乱码,转换后可能无法恢复。
单独修改某列的字符集
适用于只调整特定字段(如仅把 name 列改为支持 emoji):
- ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 或更精确地保留原类型和约束:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
字符集修改不是“一设永逸”,需从连接、服务端、数据库、表、列五个层面保持一致,尤其注意客户端连接时指定 SET NAMES utf8mb4 或在连接字符串中加入 charset=utf8mb4。









