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
- 在VS Code中,点击顶部菜单栏的终端(Terminal) -> 新建终端(New Terminal)
- 在终端面板的右上角,点击向下的小箭头 ∨
- 选择选择默认配置文件(Select Default Profile)
- 选择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文件编码 | utf8 | Ctrl+, > settings.json > "files.encoding": "utf8" |
| 终端版本 | PowerShell 7 (pwsh) | 运行 $PSVersionTable.PSVersion |
| PowerShell Profile | 已配置UTF-8 | 运行 Get-Content $PROFILE |
| VS Code默认终端 | PowerShell 7 | Ctrl+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"
总结建议
- 优先升级PowerShell 7:这是解决乱码最彻底的方法
- 配置VS Code默认终端:避免每次手动切换
- 创建AGENTS.md文件:确保Codex使用正确的终端环境
- 临时方案备用:
chcp 65001命令可快速修复当前终端编码
通过以上步骤,Codex中文乱码问题应该能彻底解决。如果仍有问题,建议检查文件本身的编码格式是否正确。