You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Windows环境下将Python UTF-8标准输出重定向到文件时出现错误

解决PowerShell中Python重定向输出UTF-8字符的编码错误

这个问题我之前也踩过坑,本质是PowerShell默认的输出编码不是UTF-8,而Python在重定向标准输出时,会默认使用系统控制台的编码(也就是charmap),导致像\u2714(✓)这类特殊字符无法被编码。下面给你几个实用的解决办法:

方法1:在Python代码中强制指定输出编码为UTF-8

如果可以修改代码的话,直接让Python的标准输出使用UTF-8编码,这样不管是控制台输出还是重定向到文件都不会有问题:

import sys
# 重新配置标准输出的编码为UTF-8
sys.stdout.reconfigure(encoding='utf-8')
print("\u2714")

执行原命令python3 .\test.py > test.txt就能正常生成UTF-8编码的文件了。

方法2:通过环境变量让Python强制使用UTF-8

如果你不想修改代码,可以在PowerShell中先设置Python的环境变量,开启UTF-8全局支持(Python 3.7及以上版本支持):

$env:PYTHONUTF8=1
python3 .\test.py > test.txt

这个环境变量会让Python默认用UTF-8处理所有标准输入、输出和错误流,完美适配重定向场景。

方法3:用PowerShell的Out-File命令指定编码

另一种思路是让PowerShell来处理编码转换,用Out-File替代重定向符号,并明确指定UTF-8编码:

python3 .\test.py | Out-File -Encoding utf8 test.txt

这种方法不需要修改代码,也不用设置环境变量,直接通过PowerShell的命令完成编码转换。

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

火山引擎 最新活动