前言
最近开发者圈里有个小发现:只需花几块钱就能在闲鱼上拼一个GPT Team车,然后就能用一个月的Codex各模型——说白了,这些人利用的是0刀或1刀的Team试用额度。我抱着试试看的心态体验了一把,不得不说,Codex的代码一次通过率确实比Kimi 2.5这类国产模型高出不少,用起来顺手,额度也充裕,真正“量大管饱”。(如果你使用Codex桌面端,还能限时享受双倍额度,体验更爽。)


但用着用着,问题就冒出来了——Codex经常把中文变成乱码,满屏奇怪符号,代码里好好的注释全被毁掉。网上搜了一圈,发现解决方案其实很简单:安装PowerShell 7就能搞定。
为什么要安装PowerShell 7

Codex基于Node.js,默认采用UTF-8编码;而Windows自带的PowerShell 5.1和CMD默认编码是GBK(代码页936)。当Codex通过终端读写文件时,编码一旦冲突,中文自然就变成了乱码。PowerShell 7默认就是UTF-8,所以换上它就能从根源上解决问题。
如何安装PowerShell 7
安装方式很简单:前往GitHub上PowerShell的Release页面下载(https://github.com/powershell/powershell/releases),或者直接在微软商店搜索安装。装完后记得重启电脑,否则某些终端可能仍在使用旧版PowerShell。
重启后打开CMD,运行where pwsh,如果输出类似C:\Program Files\PowerShell\7\pwsh.exe,就说明pwsh命令已经全局可用了。

测试Codex是否成功使用PowerShell 7
打开Codex,让它执行$PSVersionTable.PSVersion.ToString(),如果返回的是7.x,恭喜,配置成功。

之后让Codex修改代码,中文乱码的问题就彻底拜拜了。
接下来是扩展内容:更彻底的解决方案——不仅针对Codex,也适用于Copilot,并且附带自动化脚本。
彻底解决 Codex / Copilot 修改中文乱码【含自动化解决方案】
引言
使用GitHub Copilot或OpenAI Codex自动重构代码时,难免会遇到这种尴尬:AI生成的代码逻辑完美,但原本注释里的中文却变成了“æˆ‘çˆ±ä¸æ–‡”这样的乱码。更烦人的是,这种字符有时会污染到代码本身,埋下巨大的稳定性隐患。
一、 问题核心:被忽视的“终端中转”
乱码的根源不在AI的大脑,也不在编辑器的显示,而在执行链路的编码不一致。Copilot/Codex在执行某些修改任务(比如重构整个文件或批量替换)时,往往会通过终端调用系统指令。Windows终端(PowerShell/CMD)默认使用GBK编码,它在处理AI传来的UTF-8字节时会发生“误读”,导致写入文件的内容从源头上就损坏了。
二、 解决方案:构建全链路UTF-8环境
下面给出一套全自动的解决方案。先新建一个.txt文件,把下面的代码复制进去,然后将文件更名为fix_all_encoding.bat,右键点击并以管理员身份运行即可。
@echo off
setlocal enabledelayedexpansion
title AI 编程环境编码一键优化工具
:: 1. 权限验证
net session >nul 2>&1
if %errorLevel% neq 0 (
echo [错误] 请右键点击此文件,选择“以管理员身份运行”!
pause
exit /b
)
echo [*] 正在初始化环境...
:: 2. 设置系统级环境变量
echo [*] 配置系统环境变量 (UTF-8)...
setx /m PYTHONUTF8 "1" >nul
setx /m LESSCHARSET "utf-8" >nul
:: 3. 配置 PowerShell Profile
echo [*] 配置 PowerShell 启动策略...
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$p = Split-Path $PROFILE; if (!(Test-Path $p)) { New-Item -ItemType Directory -Path $p -Force }; ^
$content = '$OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8; [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8; [System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8'; ^
if (Test-Path $PROFILE) { $old = Get-Content $PROFILE; if ($old -notcontains '$OutputEncoding = [Console]::InputEncoding') { Add-Content -Path $PROFILE -Value $content } } else { Set-Content -Path $PROFILE -Value $content -Encoding UTF8 }"
:: 4. 智能合并 VS Code 设置
echo [*] 同步 VS Code 全局设置...
set "VSC_SETTINGS=%APPDATA%\Code\User\settings.json"
if exist "%VSC_SETTINGS%" (
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$path = '%VSC_SETTINGS%'; ^
$json = Get-Content $path -Raw | ConvertFrom-Json; ^
$json | Add-Member -NotePropertyName 'files.encoding' -NotePropertyValue 'utf8' -Force; ^
$json | Add-Member -NotePropertyName 'files.autoGuessEncoding' -NotePropertyValue $true -Force; ^
$json | ConvertTo-Json -Depth 100 | Set-Content $path -Encoding UTF8"
echo [+] VS Code 设置已同步。
)
echo.
echo ---------------------------------------------------
echo [+] 配置成功!
echo [提示] 请重启 VS Code 终端或重启编辑器以使配置生效。
echo ---------------------------------------------------
pause
运行完成后,所有涉及编码的设置都会被一次性配置好。之后重启VS Code(或终端),全链路UTF-8环境就搭建完毕了——中文乱码再也不会来烦你。
