Python的sys.stdout.encoding 默认输出编码问题
用的是 Python3,为什么在 IDLE 以及 Sublime Text 输出 sys.stdout.encoding 变量是 us-ascii,同时 print('中文') 在 sublime text 会出错,而在IDLE中不会。
另外终端输出 sys.stdout.encoding 却直接就是 UTF-8 呢?
import sysprint(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 localelocale.getpreferredencoding()
locale.getdefaultlocale()
以上是 Python的sys.stdout.encoding 默认输出编码问题 的全部内容, 来源链接: utcz.com/a/163030.html