彻底告别中文乱码:Codex 修改文件后的终极解决方案

彻底告别中文乱码:Codex 修改文件后的终极解决方案

Root Admin2 min read5 views

问题的痛点:当 AI 遇上乱码

在日常开发中,越来越多的开发者开始使用 Codex 等 AI 编程辅助工具。然而,不少人在享受 AI 带来的效率提升时,却遇到了一个令人头疼的问题:每当 Codex 自动修改文件后,原本清晰的中文注释或字符串突然变成了满屏的乱码(Mojibake)。

很多同学的第一反应是:"一定是我的 VS Code 编码设置不对!" 于是对着 VS Code 的 files.encoding 一通乱改,结果却往往收效甚微。今天,我们就来揭开这个问题的真相:根源其实不在 VS Code,而是在你的终端编码

乱码现象示例

误区:乱码真的是 VS Code 的锅吗?

大多数现代代码编辑器(包括 VS Code)默认都采用 UTF-8 编码,这是国际通用的标准。当你发现文件保存后乱码,通常是因为处理文件的“幕后黑手”——即插件运行所在的终端环境——并没有使用相同的语言“交流”。

对于 Windows 用户来说,罪魁祸首通常是 PowerShellCMD,它们在中文环境下默认使用的是 GBK (CP936) 编码。当 Codex 通过终端调用某些脚本或命令行工具来修改文件时,如果终端用 GBK 编码去读取或写入 UTF-8 的内容,乱码就此产生。

核心原因:终端与编辑器的“语言障碍”

简单来说,这是一场由于“跨语言交流”引发的误会:

  1. VS Code:我用的是 UTF-8。
  2. Codex 插件:我通过系统终端来执行修改指令。
  3. PowerShell (默认状态):我是 GBK 编码。当你传给我一段 UTF-8 的中文时,我会把它当成 GBK 解析,修改后再存回去,文件就彻底坏了。

因此,要解决这个问题,我们必须实现双端统一,即将编辑器和终端全部强制指定为 UTF-8。


解决方案:双端统一为 UTF-8

请按照以下两个步骤进行操作,即可彻底解决此问题。

第一步:确保 VS Code 全局配置为 UTF-8

虽然大部分 VS Code 安装后默认就是 UTF-8,但为了保险起见,建议手动确认:

  1. 打开 VS Code 设置 (Ctrl + ,)。
  2. 搜索 files.encoding
  3. 确保该项设置为 utf8
  4. 另外,建议勾选 Files: Guess Character Set Encoding,让编辑器具备更好的自动识别能力。

第二步:配置 PowerShell 终端编码(最关键的一步!)

这是解决问题的核心。我们需要确保 PowerShell 每次启动时都自动切换到 UTF-8 模式。

1. 确认你使用的是哪个 PowerShell

Windows 10/11 通常自带两个版本的 PowerShell:

  • Windows PowerShell (版本 5.1)
  • PowerShell Core (版本 7.x,需要自行安装,通常图标是蓝黑色的)

2. 修改 PowerShell 配置文件 ($PROFILE)

我们需要在 PowerShell 的启动配置文件中加入切换编码的命令。

  • 在 VS Code 终端中输入以下命令,查看你的配置文件路径:

    $PROFILE
    
  • 如果提示文件不存在,可以手动创建一个。通常路径位于 Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

  • 使用记事本或 VS Code 打开该文件,并在末尾添加以下内容:

    # 设置终端输出和输入编码为 UTF-8
    [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
    [Console]::InputEncoding = [System.Text.Encoding]::UTF8
    # 针对特定命令行的设置(可选)
    $OutputEncoding = [System.Text.Encoding]::UTF8
    

3. 临时测试方案

如果你不想修改配置文件,可以先在终端输入以下命令立即生效,观察乱码是否消失:

chcp 65001

注:65001 是 UTF-8 的代码页标识。


总结与验证

完成上述配置后,请重启 VS Code。此时再尝试让 Codex 或其他 AI 插件修改代码,你会发现中文字符已经能够被完美保留了。

总结一下:

  • 编辑器编码是基础,必须设为 UTF-8。
  • 系统终端编码是桥梁,如果桥梁“漏风”(GBK),数据就会损坏。
  • 通过修改 $PROFILE 强制终端开启 UTF-8 是 Windows 开发者的必备技能。

希望这篇指南能帮你解决困扰已久的乱码问题。如果你在配置过程中遇到任何疑问,欢迎在评论区留言讨论!