You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell存储winget upgrade命令响应到变量时出现编码问题

我花了近一个小时排查问题,始终没有找到根因,也没能摸索出可行的解决方案。

当我运行winget upgrade命令时,返回的数据编码完全正常:
winget响应编码正常

但如果我将winget upgrade的返回结果存储到变量中($winget = winget upgrade; $winget;),部分字符就会出现乱码,看起来是编码问题导致的:
winget响应存储到变量后出现编码问题

这类cmdlet返回给PowerShell的始终是字符串,我猜测将响应赋值给变量时应用了PowerShell配置文件中的默认文本编码?我尝试给变量转换大多数常见编码,结果直接导致数据完全损坏。

我甚至尝试用所有可能的编码类型导出数据,结果全部出现乱码:

winget upgrade | Out-File -FilePath C:\tmp\test1.txt -Encoding ascii
winget upgrade | Out-File -FilePath C:\tmp\test3.txt -Encoding default
winget upgrade | Out-File -FilePath C:\tmp\test4.txt -Encoding string
winget upgrade | Out-File -FilePath C:\tmp\test5.txt -Encoding unicode
winget upgrade | Out-File -FilePath C:\tmp\test7.txt -Encoding utf32
winget upgrade | Out-File -FilePath C:\tmp\test8.txt -Encoding utf7
winget upgrade | Out-File -FilePath C:\tmp\test9.txt -Encoding utf8

我尝试通过重新编码字符串调整乱码字符,但仍未解决问题:

$originalBytes = [Text.Encoding]::Default.GetBytes('Microsoft Visual C++ 2013 Redistributable (x6')
[Text.Encoding]::Utf8.GetString($originalBytes)

重编码后结果

内容的提问来源于stack exchange,提问作者Arbiter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:15:03