sys.stdout.encoding、locale.getpreferredencoding() 和 sys.getdefaultencoding() 之间有什么区别?

What is the difference between sys.stdout.encoding, locale.getpreferredencoding(), and sys.getdefaultencoding()?

我是 python 的新手,对这种编码方式真的很困惑。到目前为止,我已经阅读了以下类型的 "encoding":

import sys
import locale

print (sys.stdout.encoding)
print (locale.getpreferredencoding())
print (sys.getdefaultencoding())

输出:

utf8
cp1252
utf-8

有什么区别?

简而言之,编码是您的数据在内部存储的方式 memory.The 不同的方式,允许更多的字符和信息。如需深入解释,我们非常欢迎您阅读 http://kunststube.net/encoding/, or Wikipedia

在 python 中,您可以通过物理调用编码类型或使用 the coding function.

中的任何一种来更改存储方式

对于您python3.x的环境,sys.stdout.encodingsys.getdefaultencoding()没有区别。它们都使用 8 位代码单元(最标准)。虽然首选编码 locale.getpreferredencoding() (cp1252) 是 latin1 的 windows 版本。

请注意,如果您想获得任何 method/function 的快速反馈,您可以随时使用帮助命令。

示例:

>>> import locale
>>> help(locale.getpreferredencoding)

输出:

Help on function getpreferredencoding in module locale:

getpreferredencoding(do_setlocale=True)
    Return the charset that the user is likely using,
    according to the system configuration.
(END)