一、检查字符集一致性
当老薛主机连接MySQL出现乱码时,需首先确认以下三端的字符集统一为UTF-8:
- 客户端工具:如Navicat、MySQL Workbench等需设置为UTF-8编码
- 操作系统:通过命令
locale
查看系统编码,修改为UTF-8(CentOS 7修改/etc/locale.conf
文件) - 数据库服务端:执行
SHOW VARIABLES LIKE 'character_set%';
验证字符集设置
二、修改MySQL服务器配置
在MySQL配置文件(my.cnf或my.ini)中添加以下配置并重启服务:
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
此配置强制服务端使用UTF-8字符集,覆盖默认的latin1编码。
三、调整连接参数设置
在代码或连接工具中显式指定字符集参数:
- JDBC连接字符串添加
?useUnicode=true&characterEncoding=UTF-8
- 命令行连接时使用
mysql --default-character-set=utf8mb4
- 执行SQL语句前运行
SET NAMES 'utf8mb4'
四、修复已存储的乱码数据
若已有数据出现乱码,可通过以下步骤转换:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; SELECT CONVERT(BINARY(CONVERT(列名 USING latin1)) USING utf8mb4) FROM 表名;
此方法将误存为latin1的中文字符重新解析为UTF-8编码。
解决老薛主机连接MySQL乱码的核心在于统一字符集环境:服务端配置、客户端设置、连接参数三者均需使用UTF-8(推荐utf8mb4)。对于已损坏数据,需通过编码转换函数修复。定期检查数据库和表的字符集设置可预防问题复发。
本文由阿里云优惠网发布。发布者:编辑员。禁止采集与转载行为,违者必究。出处:https://aliyunyh.com/589049.html
其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。