🗣 Wd提问: mysql程序乱码解决
🤖 Ai回答: MySQL 程序出现乱码(如中文显示为问号、乱字符等)通常是由于字符集设置不一致导致的。下面是一份完整的 MySQL 乱码解决方法,适用于命令行、客户端程序(如 PHP、Python)、以及连接工具(如 Navicat、DBeaver)。
🔍 一、确认乱码出现的环节
MySQL 乱码可能出现在以下几个环节:
1、数据库、表、字段的字符集
2、连接时的字符集
3、客户端(程序、终端)的字符集
4、操作系统终端的编码设置
🛠️ 二、解决步骤
✅ 1、查看当前数据库字符集设置
sql
查看数据库字符集
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';
查看服务器字符集
SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';
查看客户端连接字符集
SHOW VARIABLES LIKE 'character_set_%';
✅ 2、设置默认字符集为 utf8mb4(推荐)
编辑 MySQL 配置文件(通常是 `my.cnf` 或 `my.ini`,Linux 一般在 `/etc/my.cnf`):
ini
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake 忽略客户端字符集设置,强制使用服务器配置
[mysql]
default-character-set=utf8mb4
⚠️ 注意:`utf8mb4` 支持表情符号(如 😄),而 `utf8`(MySQL 中的 utf8 实际是 utf8mb3)不支持。
✅ 3、修改已有数据库、表的字符集
修改数据库字符集
sql
ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改数据表字符集
sql
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
✅ 4、修改连接时的字符集
连接 MySQL 后执行:
sql
SET NAMES 'utf8mb4';
或在连接字符串中指定字符集(如 PHP、Python 等语言连接)。
✅ 5、客户端程序设置字符集
Python 示例(使用 pymysql)
python
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test',
charset='utf8mb4'
)
PHP 示例(PDO)
php
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8mb4';
$opt = [
PDO::ATTR_ERRMODE = PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE = PDO::FETCH_ASSOC
];
$pdo = new PDO($dsn, 'root', 'password', $opt);
✅ 6、检查终端或连接工具编码
命令行终端:确保终端编码是 UTF-8
Windows:`chcp 65001` 切换到 UTF-8 模式
Linux/macOS:一般默认是 UTF-8
连接工具(如 Navicat):连接设置中选择字符集为 `utf8mb4`
✅ 7、插入测试数据验证
sql
INSERT INTO your_table (name) VALUES ('中文测试'),('😊');
SELECT * FROM your_table;
如果显示正常,说明问题已解决。
🧪 三、常见乱码场景及解决
| 场景 | 原因 | 解决方案 |
|
| 数据库中中文乱码 | 表/字段字符集不是 utf8mb4 | 使用 `ALTER TABLE` 修改 |
| 程序读取乱码 | 连接未设置 utf8mb4 | `SET NAMES 'utf8mb4'` 或连接参数设置 |
| 终端显示乱码 | 终端编码不是 UTF-8 | 修改终端编码 |
| 插入表情符号失败 | 字符集不支持 4 字节字符 | 使用 utf8mb4 而非 utf8 |
📌 四、补充说明
MySQL 中的 `utf8` 实际只支持最多 3 字节字符,不支持表情符号(emoji)。
推荐统一使用 `utf8mb4` + `utf8mb4_unicode_ci` 排序规则。
修改配置后需要重启 MySQL 服务生效。
✅ 五、总结
| 步骤 | 内容 |
| 1 | 设置 MySQL 配置文件字符集为 utf8mb4 |
| 2 | 修改数据库、表字符集 |
| 3 | 程序连接时设置字符集 |
| 4 | 检查终端或工具的编码设置 |
| 5 | 插入测试数据验证 |
如果你能提供具体乱码的截图、代码、数据库结构或操作步骤,我可以帮你更精准定位问题。欢迎继续提问!
📣 商家广告:





0
IP地址: 73.2.48.237
搜索次数: 1
提问时间: 2025-11-11 06:31:56
🛒 域名购买:
wangsou.com.cn
sbnjt.net
72.gs
app.ln.cn
53.biz
63.gs
ng.cx
8.hi.cn
twks.cn
qn.gs
❓️ 热门提问:
人民币香港
船舶主机喷油器
vps超低价
云虚拟主机哪个便宜
jpg高清壁纸搜索引擎
挂机工具app
关于云计算培训机构
Schema与食谱SEO
香港地区云主机
域名解析申请
豌豆Ai站群搜索引擎系统
🌐 域名评估:
5a.jl.cn
8333.top
fyhm.cn
vj.gs
chunshui.net
kzqt.cn
su7.gd.cn
jjxs.cn
r.hk.cn
nggl.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
北京网络营销
点赞排名
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。