The rare circumstance in which UTF-8 mode gets enabled automatically is described in the following paragraph [1]:
If the PYTHONUTF8 environment variable is not set at all, then the
interpreter defaults to using the current locale settings, unless the
current locale is identified as a legacy ASCII-based locale (as
described for PYTHONCOERCECLOCALE), and locale coercion is either
disabled or fails. In such legacy locales, the interpreter will
default to enabling UTF-8 mode unless explicitly instructed not to do
so.
Note that UTF-8 mode is never enabled automatically in Windows. In contrast to POSIX, the locale encoding in Windows is unrelated to the current LC_CTYPE locale. Instead, the locale encoding gets set to the process code page, which is based on the system locale by default and never changes while a process is running. The system locale may be incompatible with the current LC_CTYPE locale, Windows user locale, and preferred UI language (e.g. for text resources such as error messages), so try to explicitly use UTF-8 for text files whenever possible.
---
[1] https://docs.python.org/3/library/os.html#utf8-mode
|