window上Codex 中文乱码问题排查与解决方案
问题描述
在使用 Codex 处理中文网站相关任务时,代码中包含中文字符,经常出现以下问题:
- 中文显示为乱码;
- 中文被替换为
???等占位符。
最初怀疑是编码问题,于是在 AGENTS.md 中添加规则:
输入和输出要求为 UTF-8 无 BOM
这个措施让乱码频率有所降低,但问题并未彻底解决,Codex还是时不时的输出点莫名奇妙的中文乱码出来,并且???这种情况的概率越来越多,每次都改得想吐。 ![]()
然后我就开始留意每次进行任务时Codex上面的那些输出的日志,不看不知道,一看吓一跳,如下
- 每次任务执行过程中实际上都发生了中文乱码;
- 添加的规则触发了某种“纠错机制”,在输出阶段尝试修复;
- 但纠错并非总能成功,导致部分输出仍为乱码或被
???代替(这个???是最骚的,要改只能叫Codex改,根本猜不出???代表什么,有时叫他修改,改完还是乱码,真的哭死
); - 此外,每次纠错显著延长了任务执行时间,并且结果不可靠。

问题定位
经过深入排查(其实就是问Codex为什么你老是中文输出乱码,然后Codex给了我相应的排查清单),最终将问题根源定位到 Windows 自带的 PowerShell:
- Windows 11 默认自带的是 PowerShell 5.x;
- 该版本 支持 UTF-8 中文输入(读取无问题);
- 但 输出时默认使用 GBK 编码,不支持 UTF-8 输出;
- 导致 Codex 在调用 PowerShell 执行命令并获取输出时,中文字符被错误编码,从而出现乱码或
???。
解决方案
-
升级 PowerShell
安装 PowerShell 7.x 或更高版本(该版本原生支持 UTF-8 输入与输出)。 -
更新 Agent 记忆
在AGENTS.md中添加明确记忆,确保 Codex 调用正确的 PowerShell 版本,例如:我的电脑上已安装 PowerShell 7.x 版本。调用 PowerShell 时,默认使用该版本,其系统路径为:
C:\Program Files\PowerShell\7\pwsh.exe -
效果
在上面这一通配置后,中文乱码问题彻底解决,每次就不用花那额外的额度去纠错。
5 个帖子 - 4 位参与者