Python的sys.stdout.encoding 默认输出编码问题

用的是 Python3,为什么在 IDLE 以及 Sublime Text 输出 sys.stdout.encoding 变量是 us-ascii,同时 print('中文') 在 sublime text 会出错,而在IDLE中不会。
另外终端输出 sys.stdout.encoding 却直接就是 UTF-8 呢?

import sys

print(sys.getdefaultencoding())

print (sys.stdout.encoding)

print('中文')

终端输出
图片描述

IDLE输出图片描述

回答:

IDLE和标准终端中sys.stdout的实现不相同:

  • IDLE

<idlelib.PyShell.PseudoOutputFile object at 0x000001C3A8CB6BE0>

  • 标准终端

<_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp936'>

至于Sublime上为什么会报错,因为我环境中没有安装Sublime,你可以通过以上命令查看一下。

而且从Python的实现中可以看出它们的编码并不一样。

你可以通过以下命令查看当前环境的编码来源:

import locale

locale.getpreferredencoding()

locale.getdefaultlocale()

以上是 Python的sys.stdout.encoding 默认输出编码问题 的全部内容, 来源链接: utcz.com/a/163030.html

回到顶部