window上的Codex中文输出乱码问题的解决

window上的Codex中文输出乱码问题的解决
window上的Codex中文输出乱码问题的解决

window上Codex 中文乱码问题排查与解决方案

问题描述

在使用 Codex 处理中文网站相关任务时,代码中包含中文字符,经常出现以下问题:

  • 中文显示为乱码;
  • 中文被替换为 ??? 等占位符。

最初怀疑是编码问题,于是在 AGENTS.md 中添加规则:

输入和输出要求为 UTF-8 无 BOM

这个措施让乱码频率有所降低,但问题并未彻底解决,Codex还是时不时的输出点莫名奇妙的中文乱码出来,并且???这种情况的概率越来越多,每次都改得想吐。 :sob:
然后我就开始留意每次进行任务时Codex上面的那些输出的日志,不看不知道,一看吓一跳,如下

  • 每次任务执行过程中实际上都发生了中文乱码
  • 添加的规则触发了某种“纠错机制”,在输出阶段尝试修复;
  • 但纠错并非总能成功,导致部分输出仍为乱码或被 ??? 代替(这个???是最骚的,要改只能叫Codex改,根本猜不出???代表什么,有时叫他修改,改完还是乱码,真的哭死 :sob: :sob: :sob:);
  • 此外,每次纠错显著延长了任务执行时间,并且结果不可靠。 :sob:

问题定位

经过深入排查(其实就是问Codex为什么你老是中文输出乱码,然后Codex给了我相应的排查清单),最终将问题根源定位到 Windows 自带的 PowerShell

  • Windows 11 默认自带的是 PowerShell 5.x
  • 该版本 支持 UTF-8 中文输入(读取无问题);
  • 输出时默认使用 GBK 编码,不支持 UTF-8 输出;
  • 导致 Codex 在调用 PowerShell 执行命令并获取输出时,中文字符被错误编码,从而出现乱码或 ???

解决方案

  1. 升级 PowerShell
    安装 PowerShell 7.x 或更高版本(该版本原生支持 UTF-8 输入与输出)。

  2. 更新 Agent 记忆
    AGENTS.md 中添加明确记忆,确保 Codex 调用正确的 PowerShell 版本,例如:

    我的电脑上已安装 PowerShell 7.x 版本。调用 PowerShell 时,默认使用该版本,其系统路径为:C:\Program Files\PowerShell\7\pwsh.exe

  3. 效果
    在上面这一通配置后,中文乱码问题彻底解决,每次就不用花那额外的额度去纠错。 :face_holding_back_tears:

5 个帖子 - 4 位参与者

阅读完整话题

来源: linux.do查看原文