解决python3直接print可以但是重定向报错的问题。

发布时间:2024年01月17日

比如如下代码:

#test.py
print(b'\xc2\xa0'.decode())
python test.py

没关系

python test.py > ques.txt

会报错

UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position 0: illegal multibyte sequence

之后尝试设置环境变量

$env:PYTHONIOENCODING="UTF-8"

解决问题了,猜测是终端直接走stdio,编码会使用utf-8,但是重定向之后会使用GBK编码的原因。从而导致某些UTF-8的字符在GBK里面无法编码。
也可以直接设置:

import sys
sys.stdout.reconfigure(encoding='utf-8')
文章来源:https://blog.csdn.net/fjh1997/article/details/135646617
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。