diff --git a/Include/fileutils.h b/Include/fileutils.h index c05ff43f516394..d75189a95c5085 100644 --- a/Include/fileutils.h +++ b/Include/fileutils.h @@ -183,6 +183,10 @@ PyAPI_FUNC(int) _Py_GetLocaleconvNumeric( #endif /* Py_LIMITED_API */ +#ifdef Py_BUILD_CORE +PyAPI_FUNC(int) _Py_GetForceASCII(void); +#endif + #ifdef __cplusplus } #endif diff --git a/Python/fileutils.c b/Python/fileutils.c index e72ce543cb685b..1b7e6697c74aba 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -180,6 +180,18 @@ check_force_ascii(void) return 1; } + +int +_Py_GetForceASCII(void) +{ + if (force_ascii == -1) { + force_ascii = check_force_ascii(); + } + return force_ascii; +} + + + static int encode_ascii(const wchar_t *text, char **str, size_t *error_pos, const char **reason, diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index ba4b54864fd8e7..c01b21ffebade1 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -1615,6 +1615,10 @@ initfsencoding(PyInterpreterState *interp) Py_FileSystemDefaultEncoding = "utf-8"; Py_HasFileSystemDefaultEncoding = 1; } + else if (_Py_GetForceASCII()) { + Py_FileSystemDefaultEncoding = "ascii"; + Py_HasFileSystemDefaultEncoding = 1; + } else if (Py_FileSystemDefaultEncoding == NULL) { Py_FileSystemDefaultEncoding = get_locale_encoding(); if (Py_FileSystemDefaultEncoding == NULL) {