STINNER Victor <vstin...@python.org> added the comment:
I propose: * sys.getfilesystemencoding(): Python filesystem encoding, return "UTF-8" if the Python UTF-8 Mode is enabled * Implementation: PyConfig.filesystem_encoding * https://docs.python.org/dev/library/sys.html#sys.getfilesystemencoding * https://docs.python.org/dev/glossary.html#term-filesystem-encoding-and-error-handler * https://docs.python.org/dev/c-api/init_config.html#c.PyConfig.filesystem_encoding * locale.getencoding(): Get the locale encoding, LC_CTYPE locale encoding or the Windows ANSI code page, *read at Python startup*. Ignore the Python UTF-8 Mode. * https://docs.python.org/dev/glossary.html#term-locale-encoding * Implementation: _Py_GetLocaleEncoding() * Existing *private* function: _locale._get_locale_encoding() * locale.getencoding(current=True): Get the *current* locale encoding. The difference with locale.getencoding() is that on Unix, it gets the LC_CTYPE locale encoding at each call. * Implementation: _Py_GetLocaleEncoding() modified to ignore the UTF-8 mode. None of these functions do locale.setlocale(locale.LC_CTYPE, "") to get the user preferred encoding. Only the locale.getpreferredencoding() function uses locale.setlocale(locale.LC_CTYPE, ""). Usage of locale.getpreferredencoding() should be discouraged in the documentation, but I don't think that it can be deprecated and scheduled for removal right now: too much code rely on it :-( --- So we have 3 encodings: * Python filesystem encoding * Locale encoding * Current locale encoding Examples of usage: * Python filesystem encoding: * os.fsdecode() / os.fsencode() * C: PyUnicode_EncodeFSDefault() / PyUnicode_DecodeFSDefault() * Locale encoding * _locale._get_locale_encoding() * On Unix, os.device_encoding() * To initialize PyConfig.stdio_encoding and PyConfig.filesystem_encoding * Current locale encoding * PyUnicode_EncodeLocale() / PyUnicode_DecodeLocale() * "current_locale" parameter of private _Py_EncodeLocaleEx() / _Py_DecodeLocaleEx() ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue47000> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com