一、乱码问题根源分析
中文乱码主要源于字符编码不统一,具体表现为以下三个层面:
- 数据库层面:MySQL默认Latin1编码与UTF-8编码冲突
- 传输层面:数据导入工具未指定字符集导致解码错误
- 文件层面:SQL文件编码与数据库存储编码不一致
错误编码 | 正确编码 |
---|---|
latin1 | utf8mb4 |
gb2312 | utf8 |
二、完整解决方案
1. 数据库配置修正
通过SSH连接数据库执行以下命令:
ALTER DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2. 文件编码转换
- 使用Notepad++将SQL文件转换为UTF-8 BOM格式
- 在文件首行添加
SET NAMES 'utf8mb4';
声明
3. 正确导入命令
mysql --default-character-set=utf8mb4 -u user -p db_name < dump.sql
三、操作结果验证
执行以下SQL语句确认编码状态:
SHOW VARIABLES LIKE 'char%';
预期应显示utf8mb4相关参数值。通过phpMyAdmin查看数据记录,中文字符应正常显示无乱码。