比如如下代码:
#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')