Linux下MySQL中文乱码的全面解决方案
要解决Linux中MySQL中文乱码问题,核心在于确保数据库系统各环节字符集设置统一,通常推荐使用utf8mb4字符集,以下是具体步骤与排查方法:

检查与确认当前字符集设置
首先登录MySQL,执行以下命令查看系统字符集配置:
SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%';
若发现character_set_client、character_set_connection等变量为latin1,则需进行修改。
修改MySQL配置文件(永久生效)
编辑MySQL配置文件(通常为/etc/my.cnf或/etc/mysql/my.cnf),在[mysqld]、[client]和[mysql]段添加以下设置:
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4
保存后重启MySQL服务:
sudo systemctl restart mysqld
数据库与表字符集修正
若已有数据库或表存在乱码,需逐级修改字符集:
-- 修改数据库字符集 ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 修改表字符集 ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
连接配置与程序端调整
- 应用程序连接时:在连接字符串中指定字符集,例如JDBC添加参数
?useUnicode=true&characterEncoding=utf8。 - 命令行操作时:执行
SET NAMES 'utf8mb4';确保会话级字符集统一。
数据备份与迁移注意事项
导出数据时使用mysqldump并指定字符集:
mysqldump --default-character-set=utf8mb4 -u 用户名 -p 数据库名 > 备份文件.sql
特殊场景处理
- 若乱码仅出现在终端显示:检查Linux系统环境变量
LANG是否设置为zh_CN.UTF-8。 - 历史乱码数据修复:可尝试通过
CONVERT()函数转换编码,或导出后以正确字符集重新导入。
通过以上步骤,从服务配置、数据存储到连接访问实现字符集三层统一,即可彻底解决中文乱码问题,建议新项目全程使用utf8mb4字符集,以兼容所有Unicode字符(包括表情符号)。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/6048.html发布于:2026-07-21





