Codex 修改文件导致中文乱码的解决办法

很多人遇到 Codex 修改文件后出现中文乱码时,会以为是 VS Code 的问题。但实际上,Codex 在修改文件时,并不是直接在 VS Code 编辑器里写,而是通过终端执行命令来修改文件。

也就是说:

Codex 先在终端里运行类似 echo、sed、powershell 的命令

这些命令执行后把修改写入文件

文件再被 VS Code 打开

所以,如果 终端本身的编码不是 UTF-8,那么命令执行时就可能把中文写成错误的字节序列,导致打开文件时出现乱码。

👉 因此,问题根源在于:编辑器编码 和 终端编码 必须保持一致。
在使用 Codex 修改文件时,有时会出现 中文乱码 的情况。经过排查,我发现主要有两个问题点:

  1. VS Code 的文件编码设置不对
  2. 终端(命令行)默认编码不是 UTF-8

这两个问题叠加后,Codex 修改命令输出的文件再被终端/编辑器打开,就很容易出现乱码。下面是我的解决步骤。
每个人根据自己电脑的不一样来进行解决,命令行读取文件不要有问题,然后输出也不要有问题就好了。


1. VS Code 修改配置

首先,确保 VS Code 的默认文件编码是 UTF-8。

打开 VS Code 设置(Ctrl + ,),在 settings.json 里增加以下配置:

"files.encoding": "utf8",
"files.autoGuessEncoding": true
  • files.encoding: 默认使用 UTF-8 保存文件
  • files.autoGuessEncoding: 打开文件时自动检测是否存在 BOM/其他编码

在这里插入图片描述

这样 VS Code 打开和保存文件时,都能尽量保持编码一致。


2. 终端编码修改(PowerShell/命令行)

步骤 1:先查看自己使用的 PowerShell 版本

在终端执行:

$PSVersionTable.PSVersion
  • 如果是 5.x → 说明你在用 Windows 自带的 Windows PowerShell(旧版)。
  • 如果是 7.x → 说明你在用 PowerShell 7 (pwsh)(新版,建议用这个)。

不同版本的配置文件路径不一样,后面修改时要对应。


步骤 2:检查 profile 文件路径

在终端输入:

$PROFILE

它会显示当前版本 PowerShell 的配置文件路径,比如:

  • Windows PowerShell 5.1

    C:\Users\<用户名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    
  • PowerShell 7

    C:\Users\<用户名>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    

步骤 3:如果文件不存在,先创建

if (!(Test-Path -Path $PROFILE)) {
    New-Item -ItemType File -Force -Path $PROFILE
}

步骤 4:写入 UTF-8 初始化配置

执行以下命令,把 UTF-8 配置写入 profile 文件:

$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,如果不想升级那么需要修改一下这个函数,

$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:让配置立即生效

. $PROFILE

如果不想立即生效,也可以直接关闭终端 → 重新打开。


步骤 6:验证终端是否是 UTF-8

'中文测试' | Set-Content -Path .\utf8_test.txt
Get-Content .\utf8_test.txt

能正常显示 中文测试,说明配置成功 ✅。


3. 总结

Codex 修改文件乱码问题,根源是 编辑器编码 + 终端编码 不一致。解决步骤:

  1. VS Code 配置文件编码 → 保证保存时统一为 UTF-8
  2. 终端强制 UTF-8 → 编辑 Profile.ps1,让 PowerShell 始终用 UTF-8
    • Windows PowerShell 5.1:Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    • PowerShell 7:Documents\PowerShell\Microsoft.PowerShell_profile.ps1

4. 其他终端设置 UTF-8

4.1 Windows CMD

CMD 默认编码通常是本地代码页(比如 936 = GBK),会导致中文显示异常。

解决方法:

chcp 65001
  • 立即把当前 CMD 的代码页改为 UTF-8。
  • 但注意:只对当前窗口有效,关闭再开需要重新执行。

如果想每次 CMD 打开都生效,可以写一个批处理脚本,或者在注册表里修改默认代码页(不建议新手动系统配置,推荐用 PowerShell 方式)。


4.2 Git Bash

Git Bash 本身是基于 MinGW 的 bash,通常默认编码是 UTF-8,不会有大问题。

但如果遇到中文乱码,可以在 ~/.bashrc~/.bash_profile 文件里加上:

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

然后执行:

source ~/.bashrc

这样 Git Bash 就会强制使用 UTF-8。


5. 总结

  • VS Code:设置 "files.encoding": "utf8" 保证保存文件时统一编码。
  • PowerShell:修改 Profile.ps1,确保输入输出默认 UTF-8。
  • CMD:临时用 chcp 65001 切换编码。
  • Git Bash:通过 ~/.bashrc 设置语言环境为 UTF-8。

这样,不管是 Codex 修改文件,还是你自己手动写代码,中文文件都能避免乱码问题 ✅。

如果还是不行,建议升级power shell7来作为vscode的默认客户端

q群581851204 一块讨论一些ai编程得问题

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐