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 不再出现锟斤拷。
