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

如何在Powershell中将程序非ASCII输出保存为UTF-8编码文件

解决方案

问题根因

PowerShell捕获外部程序的标准输出时,默认使用系统OEM代码页解码字节流,而你的Go、Python程序输出的是UTF-8编码字符,第一步解码错误就会导致后续无论用什么编码存文件都显示乱码。Python额外存在适配逻辑:检测到输出被重定向/管道传输时,默认不会输出UTF-8编码,需要通过环境变量强制指定输出编码。

临时生效(单次PowerShell会话可用)

打开PowerShell后先执行以下2条配置命令,再运行你的程序写入操作即可正常输出:

# 强制Python输出UTF-8编码内容,无需修改源代码
$env:PYTHONIOENCODING = 'utf-8'
# 告诉PowerShell使用UTF-8解码外部程序的输出
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

后续你就可以正常使用命令写入UTF-8文件:

  • 写入Python输出:python hello.py | Out-File -Encoding UTF8 file2.txt
  • 写入Go输出:go run hello.go | Out-File -Encoding UTF8 file5.txt
    如果不想修改当前会话的全局配置,也可以直接调用cmd执行重定向操作,适合临时使用:
  • 写入Python输出:cmd /c "set PYTHONIOENCODING=utf-8 && python hello.py > file1.txt"
  • 写入Go输出:cmd /c "go run hello.go > file4.txt"

永久生效(所有PowerShell会话自动配置)

  1. 执行命令打开PowerShell配置文件:notepad $PROFILE,如果提示文件不存在,选择新建即可。
  2. 将以下配置写入文件后保存:
$env:PYTHONIOENCODING = 'utf-8'
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# 可选配置:将Out-File和重定向符>的默认输出编码设为UTF-8
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
  1. 重启所有PowerShell窗口,配置自动生效,无需每次手动执行配置命令。

注:以上配置同时兼容PowerShell 5.1和PowerShell 7.x所有版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 14:06:04