PyCharm控制台中文乱码的根本原因是Windows cmd默认GBK而PyCharm Console默认UTF-8解码不一致,需通过设置PYTHONIOENCODING=utf-8环境变量和Starting script中执行chcp 65001命令统一I/O编码,而非修改Project Encoding。

PyCharm 控制台输出中文乱码,绝大多数情况不是代码写错了,而是编码环境和终端底层不匹配。直接改 Project Encoding 为 GBK 或 UTF-8 都可能“一时有效、换场景失效”,关键得看你的 Python 解释器、Windows 控制台、PyCharm Console 三者实际用的编码是否对齐。
为什么 PyCharm Console 输出中文会乱码
根本原因是 Windows cmd 默认用 GBK(代码页 936),而 PyCharm 的 Python Console 默认按 UTF-8 解析输出流;两者不一致,字节流被错误解码,就显示成 或一堆问号。尤其在报错堆栈里出现中文路径/提示时,乱码更顽固——因为那是 Python 解释器自身 stderr 的原始输出,不受 PyCharm 文件编码设置影响。
- 你写的
# -*- coding: utf-8 -*-只控制源文件读取,不影响 console 输出编码 -
File → Settings → Editor → File Encodings里的Project Encoding主要影响新建/打开文件的读写,对 console 输出无直接影响 - 单纯改字体(如设为微软雅黑)只能解决“显示不出”,不能解决“解码错”,该乱还是乱
最稳的解法:强制 console 使用 UTF-8 编码
不是调 IDE 设置,而是让 Python 进程启动时就声明 I/O 编码。PyCharm 允许你在运行配置里注入环境变量和启动命令:
- 进入
Run → Edit Configurations… - 选中当前运行配置(或 Default configuration)→ 右侧
Environment variables栏填入:PYTHONIOENCODING=utf-8 - 勾选
Add content roots to PYTHONPATH和Add source roots to PYTHONPATH(避免路径相关乱码) - 如果仍不行,在
Interpreter options里加参数:-u(强制 unbuffered 输出,减少编码缓冲干扰)
这个组合能覆盖 90% 的 console 中文输出和异常堆栈乱码,包括 print()、logging、traceback.print_exc() 等所有标准输出流。
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
Windows 下必须补的一招:chcp 65001
即使设置了 PYTHONIOENCODING,PyCharm 的 Python Console 底层仍可能调用 cmd.exe,而 cmd 默认是 GBK。所以得让它主动切到 UTF-8:
- 进入
File → Settings → Tools → Python Console - 在
Starting script文本框里粘贴一行:import os; os.system('chcp 65001 >nul') - 重启 Python Console(关闭再打开),执行
import sys; print(sys.stdout.encoding)应该返回utf-8
注意:chcp 65001 是 Windows 命令,Linux/macOS 不需要这步;如果你用的是 WSL 终端集成,也跳过。
别碰的坑:乱设 Project Encoding 为 GBK
网上有方案说把 Project Encoding 改成 GBK 就行,短期可能“看起来正常”,但埋下大隐患:
- Python 3 源文件默认就是 UTF-8,硬设 GBK 容易导致读取第三方库或网络响应时解码失败
- Git 提交时编码不一致,协作时 diff 出现大量“文件已修改”假象
- 一旦项目含 emoji、繁体字、日文等非 GBK 字符,直接报
UnicodeDecodeError
真正该统一的是运行时 I/O 编码,不是源码存储编码。坚持用 UTF-8 存源文件,用 PYTHONIOENCODING + chcp 65001 管输出,才是可持续的做法。

















