diff options
author | Victor Stinner <vstinner@redhat.com> | 2018-08-28 15:27:36 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-28 15:27:36 (GMT) |
commit | d500e5307aec9c5d535f66d567fadb9c587a9a36 (patch) | |
tree | 37f95130926a65be9419683aca896b3dcfcfceee /Python/pylifecycle.c | |
parent | 5cb258950ce9b69b1f65646431c464c0c17b1510 (diff) | |
download | cpython-d500e5307aec9c5d535f66d567fadb9c587a9a36.zip cpython-d500e5307aec9c5d535f66d567fadb9c587a9a36.tar.gz cpython-d500e5307aec9c5d535f66d567fadb9c587a9a36.tar.bz2 |
bpo-34403: On HP-UX, force ASCII for C locale (GH-8969)
On HP-UX with C or POSIX locale, sys.getfilesystemencoding() now returns
"ascii" instead of "roman8" (when the UTF-8 Mode is disabled and the C locale
is not coerced).
nl_langinfo(CODESET) announces "roman8" whereas it uses the Latin1
encoding in practice.
Diffstat (limited to 'Python/pylifecycle.c')
-rw-r--r-- | Python/pylifecycle.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 28704c1..cc64cf9 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -1576,21 +1576,25 @@ initfsencoding(PyInterpreterState *interp) Py_FileSystemDefaultEncodeErrors = "surrogatepass"; } #else - if (Py_FileSystemDefaultEncoding == NULL && - interp->core_config.utf8_mode) - { - Py_FileSystemDefaultEncoding = "utf-8"; - Py_HasFileSystemDefaultEncoding = 1; - } - else if (Py_FileSystemDefaultEncoding == NULL) { - Py_FileSystemDefaultEncoding = get_locale_encoding(); - if (Py_FileSystemDefaultEncoding == NULL) { - return _Py_INIT_ERR("Unable to get the locale encoding"); + if (Py_FileSystemDefaultEncoding == NULL) { + if (interp->core_config.utf8_mode) { + Py_FileSystemDefaultEncoding = "utf-8"; + Py_HasFileSystemDefaultEncoding = 1; + } + else if (_Py_GetForceASCII()) { + Py_FileSystemDefaultEncoding = "ascii"; + Py_HasFileSystemDefaultEncoding = 1; } + else { + Py_FileSystemDefaultEncoding = get_locale_encoding(); + if (Py_FileSystemDefaultEncoding == NULL) { + return _Py_INIT_ERR("Unable to get the locale encoding"); + } - Py_HasFileSystemDefaultEncoding = 0; - interp->fscodec_initialized = 1; - return _Py_INIT_OK(); + Py_HasFileSystemDefaultEncoding = 0; + interp->fscodec_initialized = 1; + return _Py_INIT_OK(); + } } #endif |