在Python 2中设置默认输出编码是一个众所周知的习惯用法:
sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
这会将sys.stdout对象包装在编解码器中,该编解码器以UTF-8对输出进行编码。
sys.stdout
但是,该技术在Python 3中不起作用,因为它sys.stdout.write()期望使用a str,但是编码的结果是bytes,并且在codecs尝试将编码后的字节写入原始字节时发生错误sys.stdout。
sys.stdout.write()
str
bytes
codecs
在Python 3中执行此操作的正确方法是什么?
从Python 3.7开始,您可以使用以下命令更改标准流的编码reconfigure():
reconfigure()
sys.stdout.reconfigure(encoding='utf-8')
您还可以通过添加errors参数来修改如何处理编码错误。
errors