Codex 教程
Codex中文乱码
2026-03-11
282 views

Codex 修改文件导致中文乱码的解决办法
问题结论
编辑器编码 和 终端编码 必须保持一致。
在使用 Codex 修改文件时,有时会出现 中文乱码 的情况


打开 VS Code 设置(Ctrl + ,),在 settings.json 里增加以下配置:
json
"files.encoding": "utf8",
"files.autoGuessEncoding": true
files.encoding: 默认使用 UTF-8 保存文件files.autoGuessEncoding: 打开文件时自动检测是否存在 BOM/其他编码这样 VS Code 打开和保存文件时,都能尽量保持编码一致。
2. 终端编码修改(PowerShell/命令行)
步骤 1:先查看自己使用的 PowerShell 版本
在终端执行:
shell
$PSVersionTable.PSVersion
如果是
5.x→ 说明你在用 Windows 自带的 Windows PowerShell(旧版)。如果是
7.x→ 说明你在用 PowerShell 7 (pwsh)(新版,建议用这个)。
不同版本的配置文件路径不一样,后面修改时要对应。
步骤 2:检查 profile 文件路径
在终端输入:
shell
$PROFILE
它会显示当前版本 PowerShell 的配置文件路径,比如:
Windows PowerShell 5.1
textC:\Users\<用户名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1PowerShell 7
textC:\Users\<用户名>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
把$PROFILE返回的路径直接放入搜索栏里,如果能搜索到则直接进入步骤4

步骤 3:如果文件不存在,先创建
在终端直接运行
text
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Force -Path $PROFILE
}
步骤 4:写入 UTF-8 初始化配置
执行以下命令,把 UTF-8 配置写入 profile 文件:
text
$utf8Block = @'
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 $utf8Block -Encoding UTF8
如果还有报错,那说明修改的是5.1版本的写入有问题,有人反馈了一下命令还是乱码,可能是5.1版本的windows命令
Windows PowerShell 5.1 里,UTF8 实际上会写成 UTF-8 with BOM。
结果就是:虽然你指定了 UTF-8,但多了 BOM 头,VS Code 或 Codex 再读时,就可能出现 �? 这种乱码现象。这个地方建议升级7,如果不想升级那么需要修改一下这个函数,
text
$utf8Block = @'
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'
'@
# 先读取现有 profile 内容(如果有)
$profileContent = ""
if (Test-Path $PROFILE) {
$profileContent = Get-Content -Path $PROFILE -Raw
}
# 如果还没写过,就追加一份,确保文件保存为 UTF-8 无 BOM
if ($profileContent -notmatch 'Console::OutputEncoding') {
$newContent = $profileContent + "`r`n" + $utf8Block
[System.IO.File]::WriteAllText($PROFILE, $newContent, (New-Object System.Text.UTF8Encoding($false)))
}
步骤 5:让配置立即生效
text
. $PROFILE
步骤 6:验证终端是否是 UTF-8
text
'中文测试' | Set-Content -Path .\utf8_test.txt
Get-Content .\utf8_test.txt
能正常显示 中文测试,说明配置成功 ✅。
