diff options
author | Inada Naoki <songofacandy@gmail.com> | 2020-01-28 10:12:31 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-28 10:12:31 (GMT) |
commit | 148610d88a2785751ed435a4e60f07a9f1bc50a6 (patch) | |
tree | 4cfb46bd1f8eacda55cdb092cb65cb1f05453bbd /Doc/using | |
parent | 13c1c3556f2c12d0be2af890fabfbf44280b845c (diff) | |
download | cpython-148610d88a2785751ed435a4e60f07a9f1bc50a6.zip cpython-148610d88a2785751ed435a4e60f07a9f1bc50a6.tar.gz cpython-148610d88a2785751ed435a4e60f07a9f1bc50a6.tar.bz2 |
bpo-39287: Doc: Add UTF-8 mode section in using/windows. (GH-17935)
Co-Authored-By: Kyle Stanley <aeros167@gmail.com>
Diffstat (limited to 'Doc/using')
-rw-r--r-- | Doc/using/cmdline.rst | 2 | ||||
-rw-r--r-- | Doc/using/windows.rst | 44 |
2 files changed, 44 insertions, 2 deletions
diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index 146003b..fb88673 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -929,8 +929,6 @@ conflict. Also available as the :option:`-X` ``utf8`` option. - .. availability:: \*nix. - .. versionadded:: 3.7 See :pep:`540` for more details. diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index 4912048..97e9cdf 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -602,6 +602,50 @@ existed):: C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python 3.9 +.. _win-utf8-mode: + +UTF-8 mode +========== + +.. versionadded:: 3.7 + +Windows still uses legacy encodings for the system encoding (the ANSI Code +Page). Python uses it for the default encoding of text files (e.g. +:func:`locale.getpreferredencoding`). + +This may cause issues because UTF-8 is widely used on the internet +and most Unix systems, including WSL (Windows Subsystem for Linux). + +You can use UTF-8 mode to change the default text encoding to UTF-8. +You can enable UTF-8 mode via the ``-X utf8`` command line option, or +the ``PYTHONUTF8=1`` environment variable. See :envvar:`PYTHONUTF8` for +enabling UTF-8 mode, and :ref:`setting-envvars` for how to modify +environment variables. + +When UTF-8 mode is enabled: + +* :func:`locale.getpreferredencoding` returns ``'UTF-8'`` instead of + the system encoding. This function is used for the default text + encoding in many places, including :func:`open`, :class:`Popen`, + :meth:`Path.read_text`, etc. +* :data:`sys.stdin`, :data:`sys.stdout`, and :data:`sys.stderr` + all use UTF-8 as their text encoding. +* You can still use the system encoding via the "mbcs" codec. + +Note that adding ``PYTHONUTF8=1`` to the default environment variables +will affect all Python 3.7+ applications on your system. +If you have any Python 3.7+ applications which rely on the legacy +system encoding, it is recommended to set the environment variable +temporarily or use the ``-X utf8`` command line option. + +.. note:: + Even when UTF-8 mode is disabled, Python uses UTF-8 by default + on Windows for: + + * Console I/O including standard I/O (see :pep:`528` for details). + * The filesystem encoding (see :pep:`529` for details). + + .. _launcher: Python Launcher for Windows |