数据库sql脚本乱码问题
二、解决中文乱码的步骤
目标:让客户端连接编码与数据库编码保持一致(统一为utf8)。
1. 临时修改当前连接的编码(立即生效,仅当前会话有效)
在 MariaDB 命令行中执行以下命令,将连接编码改为utf8:
sql
1 | -- 修改客户端发送数据的编码 |
执行后,重新测试中文插入 / 查询,看是否还会乱码(若解决,说明是连接编码问题)。
2. 永久修改编码配置(推荐,重启后生效)
临时修改仅对当前会话有效,关闭连接后失效。需修改 MariaDB 的配置文件,永久统一编码:
(1)找到配置文件
MariaDB 的配置文件通常是:
- Windows:
C:\Program Files\MariaDB 10.3\my.ini(或my.cnf) - Linux:
/etc/my.cnf或/etc/mysql/my.cnf
(2)编辑配置文件
在文件中添加 / 修改以下内容(确保覆盖客户端和服务端):
ini
1 | [mysqld] |
(3)重启 MariaDB 服务
- Windows:通过 “服务” 找到
MariaDB,右键 “重启” - Linux:
systemctl restart mariadb或service mariadb restart
3. 验证修改是否生效
重启后,重新登录 MariaDB,执行以下命令检查:
sql
1 | SHOW VARIABLES LIKE 'character_set_%'; |
若character_set_client、character_set_connection、character_set_results均变为utf8,则配置生效。
4. (可选)优化数据库编码为utf8mb4
如果需要支持 emoji 或更多特殊中文,建议将数据库 / 表编码升级为utf8mb4(完整支持 UTF-8):
sql
1 | -- 修改数据库编码 |
同时,配置文件中的character-set-server需改为utf8mb4,collation-server改为utf8mb4_general_ci。
三、总结
中文乱码的直接原因是客户端连接编码(gbk)与数据库编码(utf8)不匹配,通过统一两者为utf8(或utf8mb4)即可解决。优先执行临时修改验证,再通过配置文件永久生效,确保后续连接不再出现编码问题。
编辑分享
除了修改字符集编码,还有其他方法解决MariaDB数据库中的中文乱码问题吗?
执行了SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_results = utf8; 后,如何确认客户端连接编码已经修改为utf8?
如何通过修改MariaDB的配置文件来永久修改字符集编码?
