<p>根本原因是终端/控制台字符编码与Python输出流不匹配:PyCharm运行窗口默认使用系统locale编码(Windows常为GBK),需同步设置File Encodings为UTF-8、源文件添加# -- coding: utf-8 --、运行配置中添加PYTHONIOENCODING=utf-8环境变量,并将Windows终端切换为PowerShell或执行chcp 65001。</p>

PyCharm 运行 Python 脚本时中文输出变成 ???? 或方块,根本原因只有一个:终端/控制台的字符编码和 Python 输出流不匹配。不是代码写错了,也不是 Python 本身问题,而是环境层的编码链断在了某一处。
PyCharm 控制台默认编码不是 UTF-8
PyCharm 的运行窗口(Run Console)默认使用系统 locale 编码,Windows 上常是 GBK,Linux/macOS 可能是 UTF-8 但未被 IDE 正确识别。
- 打开
File → Settings → Editor → File Encodings - 确保三项都设为
UTF-8:•
Global Encoding
•Project Encoding
•Default encoding for properties files - 勾选
Transparent native-to-ascii conversion(仅对 .properties 文件有用,可不勾)
⚠️ 注意:改完必须重启 PyCharm 才生效——很多人改了不重启,以为没用。
Python 源文件没声明编码,或声明错
即使 IDE 设对了,Python 解释器读源码时仍可能按默认编码(如 ASCII)解析,导致中文字符串字面量直接报错或乱码。
- 在 Python 文件第一行或第二行加编码声明:
# -*- coding: utf-8 -*-
或# coding=utf-8 - 不要写成
# coding: utf-8(冒号后多空格有时会失效) - 如果文件里有中文注释、字符串,这条声明必须存在且位置正确
❌ 错误示例:print("你好") 前没加编码声明,且文件保存为 UTF-8 —— 解释器可能当 ASCII 读,抛 SyntaxError: Non-UTF-8 code starting with...
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
运行配置里没指定环境变量 PYTHONIOENCODING
这是最容易被忽略的一环:PyCharm 启动 Python 进程时,sys.stdout 的编码由 PYTHONIOENCODING 环境变量决定,而非 IDE 编码设置。
- 打开
Run → Edit Configurations... - 选中你的运行配置 → 展开
Environment variables - 添加:
PYTHONIOENCODING=utf-8 - 如果已有其他变量,用分号隔开(Windows)或冒号(macOS/Linux)
✅ 这一步能强制 Python 输出流用 UTF-8 编码写入控制台,绕过系统 locale 干扰。
Windows 下 cmd 终端本身不支持 UTF-8(旧版 PyCharm 默认用它)
PyCharm 2023.3 之前版本,在 Windows 上默认用 cmd.exe 启动 Python,而老版 cmd 默认代码页是 936(GBK),哪怕你设了 UTF-8,它也“假装看不见”。
- 方案一(推荐):切换终端为
PowerShell或WSL•
Settings → Tools → Terminal → Shell path
• 改为powershell.exe或wsl.exe - 方案二(临时):在
cmd里手动执行chcp 65001,但每次启动都要重输,不治本
? 补充:如果你用的是 Conda 环境,确保 conda activate 后终端仍是 UTF-8 环境,否则 conda 自带的激活脚本可能重置代码页。
真正卡住人的,往往不是某一个设置没调对,而是 IDE 编码 + 源文件声明 + 运行环境变量 + 终端底层支持 四者没对齐。少一个,print("中文") 就可能变成问号。尤其在 Windows 上,这四个环节全得亲手拧紧,缺一不可。

















