@@ -108,6 +108,12 @@ Python UTF-8 Mode
108
108
.. versionadded :: 3.7
109
109
See :pep: `540 ` for more details.
110
110
111
+ .. versionchanged :: next
112
+
113
+ Python UTF-8 mode is now enabled by default (:pep: `686 `).
114
+ It may be disabled with by setting :envvar: `PYTHONUTF8=0 <PYTHONUTF8> ` as
115
+ an environment variable or by using the :option: `-X utf8=0 <-X> ` command line option.
116
+
111
117
The Python UTF-8 Mode ignores the :term: `locale encoding ` and forces the usage
112
118
of the UTF-8 encoding:
113
119
@@ -139,31 +145,22 @@ level APIs also exhibit different default behaviours:
139
145
default so that attempting to open a binary file in text mode is likely
140
146
to raise an exception rather than producing nonsense data.
141
147
142
- The :ref: `Python UTF-8 Mode <utf8-mode >` is enabled if the LC_CTYPE locale is
143
- ``C `` or ``POSIX `` at Python startup (see the :c:func: `PyConfig_Read `
144
- function).
145
-
146
- It can be enabled or disabled using the :option: `-X utf8 <-X> ` command line
147
- option and the :envvar: `PYTHONUTF8 ` environment variable.
148
-
149
- If the :envvar: `PYTHONUTF8 ` environment variable is not set at all, then the
150
- interpreter defaults to using the current locale settings, *unless * the current
151
- locale is identified as a legacy ASCII-based locale (as described for
152
- :envvar: `PYTHONCOERCECLOCALE `), and locale coercion is either disabled or
153
- fails. In such legacy locales, the interpreter will default to enabling UTF-8
154
- mode unless explicitly instructed not to do so.
155
-
156
- The Python UTF-8 Mode can only be enabled at the Python startup. Its value
148
+ The :ref: `Python UTF-8 Mode <utf8-mode >` is enabled by default.
149
+ It can be disabled using the :option: `-X utf8=0 <-X> ` command line
150
+ option or the :envvar: `PYTHONUTF8=0 <PYTHONUTF8> ` environment variable.
151
+ The Python UTF-8 Mode can only be disabled at Python startup. Its value
157
152
can be read from :data: `sys.flags.utf8_mode <sys.flags> `.
158
153
154
+ If the UTF-8 mode is disabled, the interpreter defaults to using
155
+ the current locale settings, *unless * the current locale is identified
156
+ as a legacy ASCII-based locale (as described for :envvar: `PYTHONCOERCECLOCALE `),
157
+ and locale coercion is either disabled or fails.
158
+ In such legacy locales, the interpreter will default to enabling UTF-8 mode
159
+ unless explicitly instructed not to do so.
160
+
159
161
See also the :ref: `UTF-8 mode on Windows <win-utf8-mode >`
160
162
and the :term: `filesystem encoding and error handler `.
161
163
162
- .. seealso ::
163
-
164
- :pep: `686 `
165
- Python 3.15 will make :ref: `utf8-mode ` default.
166
-
167
164
168
165
.. _os-procinfo :
169
166
0 commit comments