更改 IPython 流编码

Change IPython stream encoding

我在 Red Hat Enterprise Linux 7.5 上使用 Python 3.6.3 和 IPython 6.1.0 的 Anaconda 安装。我尝试使用包含 Unicode 字符的文本文件,但在尝试打印这些文件的内容时出现以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character '\U0001f644' in position 1: ordinal not in range(128)

我认为这是由于 IPython 默认为 ASCII 编码:

In [1]: from IPython.utils.encoding import get_stream_enc; import sys

In [2]: get_stream_enc(sys.stdout)
Out[2]: 'ANSI_X3.4-1968'

我在 IPython 文档中找不到任何解释如何将其更改为 UTF-8 的内容。可能吗?

iPython 从环境中获取输出编码。要使用可识别 unicode 的编码,请更改用户的 locale 设置或在调用 iPython:

时设置 PYTHONIOENCODING 环境变量
PYTHONIOENCODING=UTF-8 ipython