notepad++运行python脚本中文乱码需从四环节对齐编码:1.临时验证用chcp 65001;2.系统启用utf-8全局支持;3.脚本开头重置sys.stdout为utf-8;4.nppexec命令去掉cmd /c封装,并确保脚本文件本身存为utf-8。

Notepad++ 运行 Python 脚本时控制台输出中文变 ??? 或乱码,根本不是脚本写错了,而是 stdout 编码链断在了 Windows 控制台和 Python 之间 —— 解决它不靠改字体、不靠重装,只靠对齐编码环节。
chcp 65001 是最快验证法,但别当解决方案用
在 NppExec 控制台里敲 chcp 65001,回车后立刻再运行脚本,如果中文出来了,说明问题锁定在控制台代码页。这不是修复,只是“开关测试”:它只影响当前会话,关掉就失效;而且某些旧 Win10 或远程桌面根本不支持这个代码页,会报 无效的代码页。真要长期用,得进系统设置勾选“Beta 版:使用 Unicode UTF-8 提供全球语言支持”,否则每次重启都得手动敲一遍。
Python 脚本内重置 sys.stdout 编码最稳
在脚本最开头(必须在任何 print() 之前)加这三行:
import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
关键点:
- 不能写成
encoding='gbk'—— 看似能显示,但后续调requests.get()或json.loads()时容易因编码不一致出错 - 如果用了
logging,还得单独给 handler 设encoding='utf-8',否则日志还是乱 - 这招对
input()无效;要读中文输入,得同样 wrapsys.stdin
NppExec 配置里去掉 cmd /c 封装
默认执行命令是 cmd /c python "$(FULL_CURRENT_PATH)",这个 cmd /c 层会多一次编码转换,是很多乱码的隐藏源头。直接改成:
python "$(FULL_CURRENT_PATH)"
操作路径:NppExec → Execute → 输入上面这行 → Save… → 勾选 Place on Menu 和 Save。之后从菜单选这个新命令运行,绕过 cmd 封装,输出更干净。
文件本身编码不对,运行前就注定乱
如果脚本里写了中文字符串但保存时用了 GBK,而 Notepad++ 又没正确识别,那 Python 解析源码阶段就崩了,后面再怎么调 sys.stdout 都没用。此时先看右下角状态栏显示什么编码,再手动试 编码 → 字符集 → 中文 → GB18030,文字恢复可读后,立刻 编码 → 转为 UTF-8 + Ctrl+S。切记:没确认原始编码就点“转为 UTF-8”,等于把乱码固化进文件,再也救不回来。











