This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2017年12月07日 00:28 by ncoghlan, last changed 2022年04月11日 14:58 by admin.
| Messages (4) | |||
|---|---|---|---|
| msg307781 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2017年12月07日 00:28 | |
Right now, the legacy locale detection introduced in PEP 538 doesn't trigger for "LANG=POSIX" and "LC_CTYPE=POSIX" on macOS and other *BSD systems. This is because we're looking specifically for "C" as the response from "setlocale(LC_CTYPE, NULL)", which works on Linux (where glibc reports "C" if you configured "POSIX"), but not on *BSD systems (where POSIX and C behave the same way, but are still reported as distinct locales). As per Jakub Wilk's comments at https://mail.python.org/pipermail/python-dev/2017-December/151105.html, this isn't right: we should allow either string to be returned from setlocale, and consider both of them as indicating a legacy locale to be coerced to an explicitly UTF-8 based one if possible. |
|||
| msg307782 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2017年12月07日 00:39 | |
Added a dependency on https://bugs.python.org/issue32002, as we should finish the test case refactoring proposed there before adjusting the `POSIX` locale handling on macOS and other *BSD systems. |
|||
| msg307783 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2017年12月07日 00:42 | |
Oops, I forgot I already had an open issue for this discrepancy - I just hadn't decided how to resolve it yet. Marking as a duplicate of https://bugs.python.org/issue30672 |
|||
| msg354502 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2019年10月11日 21:32 | |
In Python 3.8, if the LC_CTYPE is "POSIX", the default stdio error handler is now "surrogateescape" instead of "strict", and the UTF-8 is now enabled. In short, LC_CTYPE="POSIX" now behaves as LC_CTYPE="C". This change impacts at least FreeBSD. If I correctly, if there is no LC_ALL, LC_CTYPE or LANG environment variable on FreeBSD, the LC_CTYPE locale is "POSIX". See bpo-34485, bpo-19977 and the "POSIX locale on FreeBSD" section of my article: https://vstinner.github.io/python3-locales-encodings.html |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:55 | admin | set | github: 76419 |
| 2019年10月11日 21:32:55 | vstinner | set | messages: + msg354502 |
| 2017年12月07日 11:58:32 | jwilk | set | nosy:
+ jwilk |
| 2017年12月07日 00:42:10 | ncoghlan | set | superseder: PEP 538: Unexpected locale behaviour on *BSD (including Mac OS X) messages: + msg307783 |
| 2017年12月07日 00:39:09 | ncoghlan | set | dependencies:
+ test_c_locale_coercion fails when the default LC_CTYPE != "C" messages: + msg307782 |
| 2017年12月07日 00:28:35 | ncoghlan | create | |