MySQL 安装后设置正确的字符集对避免中文乱码、保证数据存储一致性非常重要。默认情况下,MySQL 可能使用 latin1 字符集,这不支持中文。推荐将字符集统一设置为 utf8mb4,它支持完整的 UTF-8 编码,包括 emoji 表情。
1. 修改 MySQL 配置文件
要永久生效,需要修改 MySQL 的配置文件 my.cnf(Linux)或 my.ini(Windows),通常位于:
Linux: /etc/my.cnf 或 /etc/mysql/my.cnf Windows: MySQL 安装目录下的 my.ini在配置文件中添加以下内容:
[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-server4. 新建数据库和表的字符集
即使服务器设置了默认字符集,创建数据库和表时仍建议显式指定:
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; 基本上就这些。只要配置文件改对、服务重启、验证无误,就能彻底解决字符集问题。
