数据库字符集设置指南
正确设置字符集可以避免中文乱码问题。
MySQL字符集层次:
- 服务器级别
- 数据库级别
- 表级别
- 列级别
- 连接级别
推荐字符集:utf8mb4
utf8mb4是完整的UTF-8编码,支持表情符号等4字节字符。
查看当前字符集:
- SHOW VARIABLES LIKE 'character%';
- SHOW VARIABLES LIKE 'collation%';
服务器级别设置:
编辑my.cnf配置文件:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
创建数据库时指定:
CREATE DATABASE dbname
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
修改已有数据库:
ALTER DATABASE dbname
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
创建表时指定:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
修改已有表:
ALTER TABLE users
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
连接时指定:
SET NAMES utf8mb4;
PHP连接设置:
$pdo->exec("SET NAMES utf8mb4");
或在连接字符串中指定charset=utf8mb4
常见排序规则:
- utf8mb4_unicode_ci - 通用排序,推荐
- utf8mb4_general_ci - 快速排序
- utf8mb4_bin - 区分大小写