MySQL的字符集和排序规则直接影响数据存储和查询的准确性,尤其在处理多语言内容时尤为重要。正确配置能避免乱码、排序错误等问题。下面介绍如何设置MySQL的字符集和排序规则。
查看当前字符集和排序规则
连接到MySQL后,可通过以下命令查看当前服务器、数据库、表及列的字符集设置:
SHOW VARIABLES LIKE 'character_set_%';SHOW VARIABLES LIKE 'collation_%';
这两条命令会列出所有与字符集和排序规则相关的系统变量,重点关注character_set_server和collation_server。
配置服务器级别字符集
在MySQL配置文件(如my.cnf或my.ini)中设置全局默认值,确保服务启动时使用指定字符集。
编辑配置文件,在[mysqld]部分添加:
[mysqld]character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
utf8mb4支持完整的UTF-8编码,包括emoji等四字节字符,推荐使用。而老式的utf8只支持三字节,存在兼容性问题。
设置数据库和表的字符集
创建数据库时显式指定字符集和排序规则:
CREATE DATABASE mydbCHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
建表时也可单独设置:
CREATE TABLE users (id INT PRIMARY KEY,
name VARCHAR(100)
) ENGINE=InnoDB
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
若未指定,则继承数据库或服务器的默认设置。
修改现有对象的字符集
已存在的数据库或表可通过ALTER语句更改:
ALTER DATABASE mydbCHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE users
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
注意:修改大表可能耗时较长,建议在低峰期操作,并提前备份数据。
基本上就这些。只要从服务器配置到具体表都统一使用utf8mb4和合适的排序规则,就能有效避免中文乱码、排序不准等问题。关键是保持一致性,避免混用不同字符集。
