解决Codex coding时出现中文乱码问题

0 阅读3分钟

Codex中文乱码问题解决方案总结

问题根源

Codex编码时出现中文乱码的根本原因是整个处理链路中的编码不一致。Codex通过终端(如PowerShell)修改文件,但Windows系统默认的编码(通常是GBK)和开发环境通用的编码(UTF-8)不匹配,导致文件解读错误。

核心解决思路

全链路统一为UTF-8编码,确保从编辑器到终端再到文件保存都使用一致的编码标准。

解决方案(从易到难)

1️⃣ 第一步:统一VS Code编码设置

  • Ctrl + ,打开设置,点击"打开设置(JSON)"
  • settings.json中添加或确认以下配置:
{
    "files.encoding": "utf8",
    "files.autoGuessEncoding": true
}

2️⃣ 第二步:升级并使用PowerShell 7(最关键)

安装PowerShell 7
winget install --id Microsoft.PowerShell
配置PowerShell 7的UTF-8编码

创建Profile文件并配置UTF-8:

# 1. 创建Profile文件(如果不存在)
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Force -Path $PROFILE }

# 2. 将UTF-8配置写入Profile
$utf8Config = @'
chcp 65001 | Out-Null
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new()
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
$OutputEncoding = [System.Text.UTF8Encoding]::new()
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$PSDefaultParameterValues['Set-Content:Encoding'] = 'utf8'
$PSDefaultParameterValues['Add-Content:Encoding'] = 'utf8'
'@
Add-Content -Path $PROFILE -Value $utf8Config

# 3. 立即生效
. $PROFILE
设置VS Code默认终端为PowerShell 7
  1. 在VS Code中,点击顶部菜单栏的终端(Terminal) -> 新建终端(New Terminal)
  2. 在终端面板的右上角,点击向下的小箭头 ∨
  3. 选择选择默认配置文件(Select Default Profile)
  4. 选择PowerShell 7 (pwsh)

3️⃣ 第三步:在AGENTS.md中告知Codex

在项目根目录创建或修改AGENTS.md文件:

# Agent 命令执行环境规范

- 执行命令时,请始终优先选择 **PowerShell 7 (pwsh.exe)**,而不是旧版的 **powershell.exe**
- 这样能保证命令执行全部采用 UTF-8 编码,避免中文乱码问题及 BOM 错误

4️⃣ 第四步:系统级设置(终极方案)

如果上述方法仍无效,可修改Windows系统区域设置:

  • 进入控制面板 > 区域 > 管理选项卡
  • 点击更改系统区域设置(C)...
  • 勾选Beta版: 使用 Unicode UTF-8 提供全球语言支持
  • 重启电脑

临时修复方案

临时切换编码

如果只是当前终端乱码,可运行:

chcp 65001

重新打开文件编码

如果文件内容已乱码,点击VS Code右下角的UTF-8字样,选择通过编码重新打开(Reopen with Encoding) -> UTF-8

验证检查清单

检查项正确配置检查方法
VS Code文件编码utf8Ctrl+, > settings.json > "files.encoding": "utf8"
终端版本PowerShell 7 (pwsh)运行 $PSVersionTable.PSVersion
PowerShell Profile已配置UTF-8运行 Get-Content $PROFILE
VS Code默认终端PowerShell 7Ctrl+Shift+P > Terminal: Select Default Profile
项目AGENTS.md包含编码提示在项目根目录查看或创建

常见问题解答

Q: 如何查看PowerShell版本?

$PSVersionTable.PSVersion
  • Major为5或更小:旧版Windows PowerShell(乱码根源)
  • Major为7或更大:新版PowerShell 7(推荐)

Q: 安装PowerShell 7后为何版本号还是5.1?

这是因为当前终端进程仍是旧版,需要手动启动新版:

pwsh

Q: 终端配置列表中没有PowerShell 7?

需要手动配置VS Code,在settings.json中添加:

"terminal.integrated.profiles.windows": {
    "PowerShell 7": {
        "path": "C:\Program Files\PowerShell\7\pwsh.exe"
    }
},
"terminal.integrated.defaultProfile.windows": "PowerShell 7"

总结建议

  1. 优先升级PowerShell 7:这是解决乱码最彻底的方法
  2. 配置VS Code默认终端:避免每次手动切换
  3. 创建AGENTS.md文件:确保Codex使用正确的终端环境
  4. 临时方案备用chcp 65001命令可快速修复当前终端编码

通过以上步骤,Codex中文乱码问题应该能彻底解决。如果仍有问题,建议检查文件本身的编码格式是否正确。