MySQL 字符集设置

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. 中文乱码排查

出现中文乱码,按顺序检查:

  1. 数据库字符集是不是 utf8mb4
  2. 表字符集是不是 utf8mb4
  3. 字段字符集是不是 utf8mb4
  4. 连接字符集是不是 utf8mb4
  5. 前端页面编码是不是 utf-8

8. 常用排序规则

  • utf8mb4_general_ci: 不区分大小写,常用
  • utf8mb4_unicode_ci: 支持 Unicode,更准确
  • utf8mb4_bin: 区分大小写,按二进制比较

总结

MySQL 字符集设置要点:

  • 统一用 utf8mb4,不要用 utf8
  • 数据库、表、字段都要设置
  • 连接后要设置字符集
  • 中文乱码逐层排查
  • 推荐 utf8mb4_general_ci 排序

字符集统一,才能避免乱码问题。


emer 发布于  2026-10-9 07:10