设置 mysql 字符集为 utf8mb4 可解决 中文乱码 问题。1. 修改 my.cnf 或 my.ini配置文件 ,在 client[mysqld] 中添加对应字符集设置;2. 重启 MySQL 服务使配置生效;3. 登录后执行 SHOW VARIABLES 验证 character_set 和 collation 相关变量是否均为 utf8mb4;4. 创建 数据库 和表时显式指定default CHARSET=utf8mb4,已有库表需用 ALTER 语句转换。配置正确并重启服务后即可确保数据存储一致性。

MySQL 安装后设置正确的字符集对避免 中文乱码 、保证数据存储一致性非常重要。默认情况下,MySQL 可能使用 latin1 字符集,这不支持中文。推荐将字符集统一设置为 utf8mb4,它支持完整的 UTF-8 编码,包括 emoji 表情。
1. 修改 MySQL 配置文件
要永久生效,需要修改 MySQL 的配置文件 my.cnf(linux)或 my.ini(windows),通常位于:
在配置文件中添加以下内容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake
init_connect = ‘SET NAMES utf8mb4’
说明:
- utf8mb4 是真正支持 4 字节 UTF-8 的字符集,比 utf8(实际是 utf8mb3)更完整。
- skip-character-set-client-handshake 忽略客户端字符集请求,强制使用服务器设定。
- init_connect 确保每个连接初始化时设置字符集。
2. 重启 MySQL 服务
修改配置后必须重启服务才能生效。
- Linux(systemd):sudo systemctl restart mysql
- Windows:通过服务管理器重启 MySQL 服务
3. 验证字符集设置
登录 MySQL 后执行以下命令检查是否生效:
SHOW VARIABLES LIKE ‘character_set%’;
SHOW VARIABLES LIKE ‘collation%’;
确认以下变量值为 utf8mb4:
- character-set-server
- character-set-client
- character-set-connection
- character-set-results
- character-set-database
- character-set-server
4. 新建数据库和表的字符集
即使服务器设置了默认字符集,创建数据库和表时仍建议显式指定:
CREATE DATABASE mydb DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE table users (
id int PRIMARY KEY,
name VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
已存在的数据库或表需要手动修改:
ALTER DATABASE mydb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 基本上就这些。只要配置文件改对、服务重启、验证无误,就能彻底解决字符集问题。