游乐游手机版
首页/AI热点日报/热点详情

Win11 Codex命令行乱码终端UTF-8编码设置详解

类型:热点整理2026-06-29
Win11下Codex中文乱码因终端将UTF-8字节流误按GBK解码。需四步解决:开启系统级UTF-8支持并重启;安装PowerShell7设为默认终端;配置pwsh强制UTF-8输出链路;同步VSCode编码为UTF-8。完成后即可正常显示中文。

在 Windows 11 上使用 Codex 时遇到中文乱码,输出内容变成“我爱中文”或一连串问号?别急着怀疑代码逻辑有误,问题根源在于终端将 UTF-8 的字节流错误地以 GBK 编码进行解码。只要链路中任何一个环节采用了错误编码,中文内容就会完全失效。解决思路十分清晰:首先开启系统级 UTF-8 支持,然后安装并切换到现代的 PowerShell 7,接着强制配置完整的编码输出链路,最后确保 VS Code 也同步至 UTF-8。以下是详细的操作步骤。

Win11版Codex命令行乱码?终端编码格式UTF-8设置详解【技巧】

启用系统级 UTF-8 支持(必须重启)

这一步调整的是 Windows 底层对非 Unicode 程序的默认编码处理方式,直接影响到 cmd、PowerShell 5.1 以及记事本等传统工具的运行行为。如果不开启此项功能,后续配置的效果将大打折扣。

按下 Win + I 打开设置 → 选择“时间和语言” → 进入“语言和区域” → 点击右侧“相关设置”中的“管理语言设置” → 在弹出的窗口中切换到“管理”选项卡 → 点击“更改系统区域设置” → 勾选【Beta版:使用Unicode UTF-8提供全球语言支持】 → 点击“确定” → 重启电脑。

重启后,cmd 和旧版 PowerShell 会自动切换到 UTF-8 代码页 65001。不过不建议使用它们来运行 Codex——这一步只是为整个系统打好底层基础。

安装 PowerShell 7 并设为默认终端

PowerShell 5.1(powershell.exe)是系统自带的遗留版本,对 UTF-8 的支持不够可靠。必须替换为现代化的 pwsh(PowerShell 7),它跨平台、可配置,默认行为与 Linux 一致,能大幅减少编码问题。

在任意终端中运行:winget install --id Microsoft.PowerShell

如果系统提示 winget 未识别,请前往 Microsoft Store 搜索“Windows Terminal”安装后再试;安装完成后,按 Win 键搜索“Terminal”并打开。

在 Windows Terminal 界面中,点击右上角下拉箭头 ∨ → 选择“设置” → 左侧选择“启动” → 将“默认配置文件”改为【PowerShell 7 (pwsh)】 → 点击“保存”。

⚠️ 关键提醒:请勿选择“Windows PowerShell”或“Command Prompt”,它们仍然存在 GBK 编码陷阱。

配置 pwsh 强制 UTF-8 输出链路

PowerShell 7 本身并不会自动启用 UTF-8 输出,必须手动注入编码声明,否则 Set-ContentOut-File 等命令仍可能使用 UTF-16 或系统默认编码。

第一步:在 pwsh 中运行 New-Item -Path $PROFILE -ItemType File -Force 创建配置文件(如果尚未存在)。

第二步:运行 notepad $PROFILE 用记事本打开该文件。

第三步:将以下全部内容粘贴进去,保存并关闭:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$PSDefaultParameterValues['Set-Content:Encoding'] = 'utf8'
$PSDefaultParameterValues['Add-Content:Encoding'] = 'utf8'

第四步:关闭当前 Terminal,重新打开一个新的 pwsh 窗口,输入 [Console]::OutputEncoding —— 返回结果必须是【UTF-8】,而不是 System.Text.UTF8Encoding 对象或空值。

同步 VS Code 文件编码设置

Codex 生成的代码最终会在 VS Code 中打开。如果编辑器使用 UTF-8 读取,但文件实际以 GBK 写入,乱码问题依然存在。必须确保 VS Code 的保存和读取都使用 UTF-8 编码。

Ctrl + , 打开设置 → 点击左上角的“打开设置(JSON)” → 在花括号内添加以下两行:

"files.encoding": "utf8",
"files.autoGuessEncoding": true

保存后,新建的文件默认就是 UTF-8 编码,打开旧文件时也能自动识别 BOM 或常见编码。

验证乱码是否消失

完成以上配置后,如何确认问题已经解决?可以尝试以下几种方法:

方法一:在 pwsh 中直接执行 echo "你好世界" > test.txt,然后使用 VS Code 打开 test.txt —— 文字应当清晰显示,无问号或乱码。

方法二:运行 Codex 指令,生成包含中文注释的代码文件,检查文件内容及编译结果是否正常。

方法三:在 pwsh 中输入 $PSVersionTable.PSEdition,确认返回【Core】而非 Desktop —— 这是 PowerShell 7 正在运行的明确证据。

来源:https://www.php.cn/faq/2660125.html?uid=1503042

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。