# exe文件路径 c:\Program Files\PowerShell\7\pwsh.exe代码补全快捷键:
→(右箭头):预测性补全会根据你的输入历史和命令逻辑,提前显示完整的命令建议,按→(右箭头)即可直接输入建议的内容
一、问题结论
Codex 中文乱码不是 Codex 的 bug。根因是 Windows 终端默认编码体系(历史代码页)与现代 CLI 工具(UTF-8)不一致。
唯一正确的解决方向:
使用 PowerShell 7(pwsh)+ 明确 UTF-8 输出, 让 Windows CLI 行为对齐 Linux / macOS 的默认假设。
二、Codex 为什么会乱码
- Codex(CLI / VS Code 插件)基于 Node.js
- Node 与现代 CLI 默认使用 UTF-8
- Linux / macOS 全链路默认 UTF-8
- Windows CLI(cmd / PowerShell 5.1)仍使用 历史代码页(常见 936 / GBK)
导致链路如下:
Codex(UTF-8) → Windows Console(GBK / 936) → VS Code 终端 → 中文乱码
三、cmd / PowerShell 5.1 / pwsh 的真实差异
cmd.exe
- DOS 时代遗产
- 只传文本,强依赖代码页
- 仅作为兼容层存在,不适合现代 CLI / AI 工具
Windows PowerShell 5.1(powershell.exe)
- 系统组件,随 Windows 自带
- 基于 .NET Framework
- 默认继承旧控制台编码
- 不会升级、不会替换
PowerShell 7(pwsh)
- 现代 PowerShell,基于 .NET(跨平台)
- 面向开发者与自动化
- 可控 UTF-8
- Windows / Linux / macOS 行为一致,应当使用的终端
对比总结:
| 工具 | 定位 |
|---|---|
| cmd | 兼容层 |
| PowerShell 5.1 | 系统管理遗产 |
| pwsh(PowerShell 7) | 现代开发者终端 |
四、为什么 Linux 下 Codex 更好用?
Linux / macOS 默认:
系统 locale = UTF-8 终端 = UTF-8 Shell = UTF-8 CLI = UTF-8
Windows(默认):
GUI = Unicode CLI = 历史代码页
Linux 无需声明, Windows 必须显式声明 UTF-8。
五、最终解决方案 —— 安装 PowerShell 7(pwsh.exe)
Step 1:安装 PowerShell 7
在 cmd 版的“命令提示符”对话框中执行如下命令:
winget install --id Microsoft.PowerShell
验证:pwsh --version
C:\Users\AlbertWen> pwsh --version PowerShell 7.5.5
自动安装的目录:
c:\Program Files\PowerShell\7\pwsh.exe
Step 2:进入 pwsh(不要用 cmd / PS5.1)

验证:$PSVersionTable.PSEdition
必须输出:
Core
Step 3:为 pwsh 明确设置 UTF-8(关键)

(1) 创建 profile
New-Item -ItemType File -Path $PROFILE -Force
(2) 编辑 profile
notepad $PROFILE
(3) 写入以下内容(原样复制)
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new() [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new() $OutputEncoding = [System.Text.UTF8Encoding]::new()
保存并关闭。
Step 4:重启pwsh终端并验证 UTF-8
[Console]::OutputEncoding.CodePage
必须输出:
65001
六、VSCode/Trae 如何正确使用 pwsh(重要说明)
- VS Code 会自动识别 pwsh
- 用户只需选择一次默认终端
- 终端 profiles 配置由 VS Code 自动生成
操作:
- 打开 VS Code
Terminal → Select Default Profile- 选择新安装的 PowerShell (旧版本名为 Windows PowerShell)
- 新开终端

验证:$PSVersionTable.PSEdition
输出应为:Core