chcp 65001
python -X utf8 app.py
powershell -Command "[Console]::OutputEncoding = [Text.Encoding]::UTF8"

同一个程序在 PowerShell 里输出中文正常,在 cmd 里跑日志变成锟斤拷,chcp 显示活动代码页 936。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,程序按 UTF-8 写字节,控制台按 936 代码页解释,字节序列被当成 GBK 双字节重新组合。重定向到文件时又按另一套规则处理。

「chcp 936 乱码」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

处理上按这个顺序:运行前执行 chcp 65001 切到 UTF-8;程序启动时设置标准输出编码;或把输出改为写文件 用 UTF-8 打开;批处理脚本里固定代码页 不要依赖机器默认。

改完只确认一件事:cmd 里中文正常显示 chcp 输出 65001 不再出现锟斤拷。

作者 9823189