mysql中如何配置字符集和排序规则_mysql字符集排序配置

来源:这里教程网 时间:2026-02-28 20:26:14 作者:

在 MySQL 中,字符集(Character Set)和排序规则(Collation)决定了数据如何存储和比较。配置合适的字符集和排序规则对避免乱码、支持多语言以及保证排序正确性至关重要。以下是具体的配置方法。

1. 查看当前字符集和排序规则

可以通过以下命令查看当前 MySQL 服务器的默认设置:

查看服务器默认字符集和排序规则:

SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';

查看数据库、表或列的字符集:

SHOW CREATE DATABASE db_name;
SHOW CREATE TABLE table_name;

也可以使用

SHOW FULL COLUMNS FROM table_name;
查看具体字段的排序规则。

2. 设置服务器级别的字符集和排序规则

在 MySQL 配置文件(如 my.cnf 或 my.ini)中设置全局默认值。

编辑配置文件,在

[mysqld]
段落中添加:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

重启 MySQL 服务后生效。这样新创建的数据库和表将自动使用这些设置。

3. 创建数据库时指定字符集和排序规则

在创建数据库时显式定义:

CREATE DATABASE mydb 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

如果不指定,将使用服务器默认值。

4. 创建表时设置字符集和排序规则

建表时可以单独设置:

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100)
) CHARACTER SET utf8mb4 
  COLLATE utf8mb4_unicode_ci;

也可以为某一列单独指定:

name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

5. 修改已有对象的字符集和排序规则

修改数据库:

ALTER DATABASE db_name 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

修改表:

ALTER TABLE table_name 
CONVERT TO CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

注意:修改操作可能涉及大量数据转换,建议在低峰期执行并提前备份。

6. 常用字符集与排序规则推荐

对于现代应用,推荐使用:

字符集:
utf8mb4
— 支持完整的 UTF-8,包括 emoji 和四字节字符。
排序规则:
utf8mb4_unicode_ci
— 基于 Unicode 标准,排序更准确,适合多语言。
utf8mb4_general_ci
— 旧版本兼容,性能略高但精度差。
utf8mb4_bin
— 区分大小写,按二进制比较。

如果需要区分大小写或重音符号,选择对应的

_bin
_cs
规则。

7. 客户端连接字符集设置

确保客户端与服务器字符集一致:

连接后执行:

SET NAMES utf8mb4;

或在连接字符串中指定(如 PHP PDO):

$pdo = new PDO($dsn, $user, $pass, [
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
]);

避免因客户端字符集不匹配导致插入乱码。

基本上就这些。关键是统一使用 utf8mb4,并在服务端、数据库、表、列和连接层面保持一致,就能有效避免中文乱码等问题。

相关推荐

热文推荐