summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-03-27 17:28:46 (GMT)
committerGitHub <noreply@github.com>2019-03-27 17:28:46 (GMT)
commitd929f1838a8fba881ff0148b7fc31f6265703e3d (patch)
tree36ff97834b250c4412d5a95c2206c8ba9d5cf13e /Misc
parent4a9a505d6f2474a570422dad89f8d1b344d6cd36 (diff)
downloadcpython-d929f1838a8fba881ff0148b7fc31f6265703e3d.zip
cpython-d929f1838a8fba881ff0148b7fc31f6265703e3d.tar.gz
cpython-d929f1838a8fba881ff0148b7fc31f6265703e3d.tar.bz2
bpo-36443: Disable C locale coercion and UTF-8 Mode by default (GH-12589)
bpo-36443, bpo-36202: Since Python 3.7.0, calling Py_DecodeLocale() before Py_Initialize() produces mojibake if the LC_CTYPE locale is coerced and/or if the UTF-8 Mode is enabled by the user configuration. This change fix the issue by disabling LC_CTYPE coercion and UTF-8 Mode by default. They must now be enabled explicitly (opt-in) using the new _Py_PreInitialize() API with _PyPreConfig. When embedding Python, set coerce_c_locale and utf8_mode attributes of _PyPreConfig to -1 to enable automatically these parameters depending on the LC_CTYPE locale, environment variables and command line arguments Alternative: Setting Py_UTF8Mode to 1 always explicitly enables the UTF-8 Mode. Changes: * _PyPreConfig_INIT now sets coerce_c_locale and utf8_mode to 0 by default. * _Py_InitializeFromArgs() and _Py_InitializeFromWideArgs() can now be called with config=NULL.
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS.d/next/C API/2019-03-27-15-58-23.bpo-36443.tAfZR9.rst6
1 files changed, 6 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/C API/2019-03-27-15-58-23.bpo-36443.tAfZR9.rst b/Misc/NEWS.d/next/C API/2019-03-27-15-58-23.bpo-36443.tAfZR9.rst
new file mode 100644
index 0000000..3d98c31
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2019-03-27-15-58-23.bpo-36443.tAfZR9.rst
@@ -0,0 +1,6 @@
+Since Python 3.7.0, calling :c:func:`Py_DecodeLocale` before
+:c:func:`Py_Initialize` produces mojibake if the ``LC_CTYPE`` locale is coerced
+and/or if the UTF-8 Mode is enabled by the user configuration. The LC_CTYPE
+coercion and UTF-8 Mode are now disabled by default to fix the mojibake issue.
+They must now be enabled explicitly (opt-in) using the new
+:c:func:`_Py_PreInitialize` API with ``_PyPreConfig``.