Browse Source
bpo-42236: Use UTF-8 encoding if nl_langinfo(CODESET) fails (GH-23086)
bpo-42236: Use UTF-8 encoding if nl_langinfo(CODESET) fails (GH-23086)
If the nl_langinfo(CODESET) function returns an empty string, Python now uses UTF-8 as the filesystem encoding. In May 2010 (commitpull/23092/headb744ba1d14), I modified Python to log a warning and use UTF-8 as the filesystem encoding (instead of None) if nl_langinfo(CODESET) returns an empty string. In August 2020 (commit94908bbc15), I modified Python startup to fail with a fatal error and a specific error message if nl_langinfo(CODESET) returns an empty string. The intent was to prevent guessing the encoding and also investigate user configuration where this case happens. In 10 years (2010 to 2020), I saw zero user report about the error message related to nl_langinfo(CODESET) returning an empty string. Today, UTF-8 became the defacto standard and it's safe to make the assumption that the user expects UTF-8. For example, nl_langinfo(CODESET) can return an empty string on macOS if the LC_CTYPE locale is not supported, and UTF-8 is the default encoding on macOS. While this change is likely to not affect anyone in practice, it should make UTF-8 lover happy ;-) Rewrite also the documentation explaining how Python selects the filesystem encoding and error handler.
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 88 additions and 90 deletions
-
52Doc/c-api/init_config.rst
-
31Doc/library/sys.rst
-
37Include/cpython/initconfig.h
-
2Include/internal/pycore_fileutils.h
-
8Include/pyport.h
-
2Misc/NEWS.d/next/Core and Builtins/2020-11-01-21-21-38.bpo-42236.MPx-NK.rst
-
34Python/fileutils.c
-
12Python/initconfig.c
@ -0,0 +1,2 @@ |
|||
If the ``nl_langinfo(CODESET)`` function returns an empty string, Python now |
|||
uses UTF-8 as the filesystem encoding. Patch by Victor Stinner. |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue