mysql的默认编码并非固定值,会随着版本更新发生变化,不同版本下的默认字符集和排序规则存在差异,这直接影响数据存储和读取的字符正确性。

不同mysql版本的默认编码情况
mysql 8.0之前版本
在mysql 5.7及更早的版本中,默认字符集为latin1,对应的默认排序规则为latin1_swedish_ci。这种编码仅支持部分西欧字符,存储中文、日文等多字节字符时容易出现乱码,因此实际使用中通常需要手动修改编码配置。
mysql 8.0及之后版本
从mysql 8.0版本开始,官方将默认字符集调整为utf8mb4,默认排序规则调整为utf8mb4_0900_ai_ci。utf8mb4是真正的utf8编码,支持最多4个字节的字符,能够完整存储emoji表情和各类特殊字符,兼容性更强。
如何查看mysql当前默认编码
可以通过mysql客户端执行以下命令查看当前实例的默认编码配置:
-- 查看所有字符集相关变量 SHOW VARIABLES LIKE 'character_set%'; -- 查看所有排序规则相关变量 SHOW VARIABLES LIKE 'collation%';
执行后重点关注以下几个变量:
character_set_server:服务器级别的默认字符集collation_server:服务器级别的默认排序规则character_set_database:当前数据库的默认字符集collation_database:当前数据库的默认排序规则
如何修改mysql默认编码
临时修改(重启后失效)
可以在mysql客户端中执行以下命令临时修改默认编码:
-- 设置服务器默认字符集为utf8mb4 SET GLOBAL character_set_server = 'utf8mb4'; -- 设置服务器默认排序规则为utf8mb4_0900_ai_ci SET GLOBAL collation_server = 'utf8mb4_0900_ai_ci';
永久修改(需修改配置文件)
需要修改mysql的配置文件my.cnf(Linux系统)或my.ini(Windows系统),在对应配置段添加以下内容:
[mysqld] # 设置服务器默认字符集 character-set-server=utf8mb4 # 设置服务器默认排序规则 collation-server=utf8mb4_0900_ai_ci [client] # 设置客户端默认字符集 default-character-set=utf8mb4 [mysql] # 设置mysql命令行客户端默认字符集 default-character-set=utf8mb4
修改完成后重启mysql服务即可生效。
默认编码相关注意事项
即使服务器默认编码设置为utf8mb4,如果创建数据库或表时没有显式指定编码,也会继承上级的编码配置。如果是在mysql 8.0之前版本升级到8.0的场景,建议手动检查所有数据库和表的编码,避免出现编码不一致导致的乱码问题。
另外,utf8mb4相比早期的utf8编码(mysql中utf8实际是utf8mb3,仅支持3字节字符)支持范围更广,新部署的mysql实例建议统一使用utf8mb4作为默认编码。
mysql默认编码character_set_databaseutf8mb4collation修改时间:2026-07-05 21:27:21