MySQL 字符集设置
时间:2026-10-9 07:10 作者:emer 分类: 无
MySQL 字符集设置
中文乱码是数据库开发常见问题,字符集设置一定要搞对。
1. 常用字符集
- utf8: 最多3字节,不支持 emoji
- utf8mb4: 最多4字节,支持 emoji,推荐用这个
- gbk: 中文编码,不推荐
2. 查看当前字符集
-- 查看数据库字符集
SHOW VARIABLES LIKE 'character_set%';
-- 查看排序规则
SHOW VARIABLES LIKE 'collation%';
3. 创建数据库时指定
CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
4. 创建表时指定
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5. 修改已有表字符集
-- 修改表字符集
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4;
-- 修改字段字符集
ALTER TABLE users MODIFY name VARCHAR(50) CHARACTER SET utf8mb4;
6. 连接时设置字符集
PHP 连接数据库后一定要设置:
$conn = mysqli_connect('localhost', 'user', 'pass', 'db');
mysqli_set_charset($conn, 'utf8mb4');
或者 SQL 语句:
SET NAMES utf8mb4;
7. 中文乱码排查
出现中文乱码,按顺序检查:
- 数据库字符集是不是 utf8mb4
- 表字符集是不是 utf8mb4
- 字段字符集是不是 utf8mb4
- 连接字符集是不是 utf8mb4
- 前端页面编码是不是 utf-8
8. 常用排序规则
- utf8mb4_general_ci: 不区分大小写,常用
- utf8mb4_unicode_ci: 支持 Unicode,更准确
- utf8mb4_bin: 区分大小写,按二进制比较
总结
MySQL 字符集设置要点:
- 统一用 utf8mb4,不要用 utf8
- 数据库、表、字段都要设置
- 连接后要设置字符集
- 中文乱码逐层排查
- 推荐 utf8mb4_general_ci 排序
字符集统一,才能避免乱码问题。