最近这一两个月,工作中的开发全部依赖Codex,发现这玩意是真的好用,但是在过程中也遇到过不少问题; 最主要的问题还是频繁的出现生成的中文汉字乱码的问题,刚开始我以为是Codex的问题,所以每次改完代码后又会让Codex检查一遍,将所有的乱码改好,无非就是多耗费一些Token而已; 但是有一次在使用Claude Opus的时候也遇到了中文乱码问题,我发现它跟Codex有个特点,所有的操作都是调用PowerShell的原生命令来执行,这让我意识到乱码问题可能不是Codex本身,而是出在PowerShell上,大概了解了下,是因为Windows系统的PowerShell版本太低了,升级新版会解决该问题。

所以,便有了这篇文章,如果也有遇到同样问题的,可以按照如下操作来解决:

方案一:

直接访问以下链接进行下载:

https://github.com/PowerShell/PowerShell/releases

选择电脑对应的版本下载安装即可: Pasted image 20260325161240

方案二:

通过管理员权限打开PowerShell:

Pasted image 20260325160119

执行以下命令:

winget install --id Microsoft.PowerShell

如果电脑没有winget,可访问以下链接下载安装:

https://aka.ms/getwinget

安装完winget后再执行上面的命令安装。

安装完成后打开PowerShell终端窗口,进入设置页面: Pasted image 20260325161609

在默认配置文件中选择新安装的PowerShell并保存:

Pasted image 20260325161702

关闭所有终端界面重新打开后可以看到版本号已经更新:

Pasted image 20260325161851

运行以下命令,配置编码:

if (!(Test-Path -Path $PROFILE)) {
    New-Item -Type File -Path $PROFILE -Force
}
notepad $PROFILE  # 用记事本编辑

在文件中添加以下内容:

# 设置输入/输出编码为 UTF-8
$OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding
# 可选:修改默认参数(如 Get-Content 默认使用 UTF-8)
$PSDefaultParameterValues['*:Encoding'] = 'UTF8'

** 后续使用了有一段时间的Codex了,目前暂未遇到过有乱码问题 **