Codex插件修改中文文件出现乱码的全攻略(含VS Code终端和PowerShell7设置)
问题背景
在 VS Code 编程环境中,使用 Codex(如 GitHub Copilot、OpenAI Codex 等 AI 编码助手插件)自动修改或生成文件时,经常会遇到 中文内容出现乱码 的情况,影响代码或文档的阅读和编辑体验。那么,这种乱码到底是怎么产生的?又该如何系统性排查和彻底解决?
问题分析
并非VS Code编辑器本身问题。其实 Codex 修改文件时,是通过终端执行命令把修改写入文件再由 VS Code 打开,终端编码与 VSCode 文件编码不一致时极易造成乱码。
详细解决步骤
1. VS Code统一文件编码
在设置(settings.json
)中添加:
{
"files.encoding": "utf8",
"files.autoGuessEncoding": true
}
2. 终端编码统一为UTF-8(以PowerShell为例)
检查并升级为PowerShell 7
终端输入:
$PSVersionTable.PSVersion
推荐使用 PowerShell 7(pwsh),旧版 5.1 容易有 BOM 问题。
编辑 profile 文件,强制 utf8
$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
. $PROFILE
3. CMD和Git Bash配置
- CMD临时切换:
chcp 65001
- Git Bash配置:
export LANG="zh_CN.UTF-8"
,export LC_ALL="zh_CN.UTF-8"
4. VS Code 默认终端建议
按 Ctrl+Shift+P
,选择 terminal 默认类型(推荐PowerShell 7或Git Bash),确保统一UTF-8编码,避免乱码。
常见疑问
- 为什么推荐PowerShell 7? UTF-8支持更好,适合 AI/自动化等场景。
- 为何命令执行要改为pwsh.exe? VS Code与Codex等插件及大模型调用外部终端建议统一选择
pwsh.exe
(即 PowerShell 7),而不是老的powershell.exe
。
AGENTS.md 文件提示词补充
建议在你的 AGENTS.md
文件中增加如下提示(markdown格式),用于明确告知模型使用 PowerShell 7(pwsh.exe)执行命令:
# Agent 命令执行环境规范
- 执行命令请始终优先选择 **PowerShell 7(pwsh.exe)**,而不是旧版的 **powershell.exe**。
- 这样能保证命令执行全部采用 UTF-8 编码,避免中文乱码问题及 BOM 错误。
- 请勿使用 powershell.exe,确保兼容新特性和中文无乱码。
总结
统一 VS Code 文件编码与终端编码,优先使用 PowerShell 7 并在 AGENTS.md 文件中添加提示词,可有效解决 Codex 插件自动修改中文文件乱码的常见问题。