summaryrefslogtreecommitdiffstats
path: root/Python/coreconfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/coreconfig.c')
-rw-r--r--Python/coreconfig.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/Python/coreconfig.c b/Python/coreconfig.c
index 1b9e26e..acf4645 100644
--- a/Python/coreconfig.c
+++ b/Python/coreconfig.c
@@ -1,5 +1,6 @@
#include "Python.h"
#include "internal/pystate.h"
+#include <locale.h>
#define DECODE_LOCALE_ERR(NAME, LEN) \
@@ -828,14 +829,21 @@ static void
config_init_locale(_PyCoreConfig *config)
{
if (_Py_LegacyLocaleDetected()) {
- /* POSIX locale: enable C locale coercion and UTF-8 Mode */
- if (config->utf8_mode < 0) {
- config->utf8_mode = 1;
- }
+ /* The C locale enables the C locale coercion (PEP 538) */
if (config->coerce_c_locale < 0) {
config->coerce_c_locale = 1;
}
}
+#ifndef MS_WINDOWS
+ const char *ctype_loc = setlocale(LC_CTYPE, NULL);
+ if (ctype_loc != NULL
+ && (strcmp(ctype_loc, "C") == 0 || strcmp(ctype_loc, "POSIX") == 0)) {
+ /* The C locale and the POSIX locale enable the UTF-8 Mode (PEP 540) */
+ if (config->utf8_mode < 0) {
+ config->utf8_mode = 1;
+ }
+ }
+#endif
}