在Python 2中设置默认输出编码是一个众所周知的习惯用法:

sys.stdout = codecs.getwriter("utf-8")(sys.stdout)

这将sys.stdout对象包装在一个编解码器编写器中,以UTF-8编码输出.

然而,这种技术在Python3中不起作用,因为sys.stdout.write()需要str,但编码的结果是bytes,当codecstry 将编码的字节写入原始sys.stdout时,会发生错误.

在Python3中,正确的方法是什么?

推荐答案

从Python 3.7开始,您可以使用reconfigure()更改标准流的编码:

sys.stdout.reconfigure(encoding='utf-8')

还可以通过添加errors参数来修改编码错误的处理方式.

Python-3.x相关问答推荐

如何在Python Matplotlib中在x轴上放置点

我不能使用拆分来分隔数据

合并两个数据帧并对某些总和进行求和

Python中提取每个组/ID所属特定列中的自然数

如何确保 GCP Document AI 模型输出与输入文件同名的 JSON?

使用 Python 在特定组的列中设置上限

在判断列表变量时如何判断特定列的值并分配加权整数值

运行 pip install -r requirements.txt 时出错

如何禁用 pylint 禁止自用警告?

django.core.exceptions.ImproperlyConfigured

Pythonic,自定义警告

ValueError:FixedLocator 位置的数量 (5),通常来自对 set_ticks 的调用,与刻度标签的数量 (12) 不匹配

理解 Keras 的 ImageDataGenerator 类中的 `width_shift_range` 和 `height_shift_range` 参数

Python 3x 的最佳机器学习包?

Python 3 变量名中接受哪些 Unicode 符号?

Anaconda 中的依赖项和包冲突?

计数大于Pandas groupby 中的值的项目

使用 urllib3 忽略证书验证

为什么在 Python 3 中实例的 __dict__ 的大小要小得多?

如何将文档字符串放在 Enums 上?