Python 的 sys.getdefaultencoding() 是如何使用的?

How is Python's sys.getdefaultencoding() used?

Python 的默认编码让我感到困惑。

文本文件内容中有一个 á 字符。 该文件在记事本中另存为 UTF-8。 当我没有指定 encoding='utf-8' in:

with open(filename,encoding='utf-8') as f:
    for line in f:
        print(line)

它显示为 ¡。 当我添加 encoding='utf-8' 部分时,它显示为 á.

我想知道 sys.getdefaultencoding() 有什么用,因为它显示的是 utf-8,但我仍然必须指定 utf-8 作为 á 的编码才能显示在输出中。

我正在使用 Python3.

额外编辑:

我认为使用的编码可能是 latin-1 扩展。自从: á 在 utf-8 中映射到 0xC3 0xA1,在 latin-1 扩展中:0xC3 映射到 Ã 0xA1 映射到 ¡

如何验证在未指定编码时将使用 latin-1 扩展?

阅读 Built-in Functions -> open() 中的文档:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)


In text mode, if encoding is not specified the encoding used is platform dependent: locale.getpreferredencoding(False) is called to get the current locale encoding.

其中 locale.getpreferredencoding(do_setlocale=True)

Return the encoding used for text data, according to user preferences.

sys.getdefaultencoding()不同(和独立):

Return the name of the current default string encoding used by the Unicode implementation.