Skip to content

gh-74940: Allow fallback to UTF-8 encoding on systems with no locales installed. #14925

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 26, 2023

Conversation

gordonmessmer
Copy link
Contributor

@gordonmessmer gordonmessmer commented Jul 24, 2019

This change removes the alias of the 'C' locale to 'en_US'. Because of this alias, it is currently impossible for an application to use setlocale() to specify a UTF-8 locale on a system that has no locales installed, but which supports the C.UTF-8 locale/encoding.

https://bugs.python.org/issue30755

@bedevere-bot
Copy link

Most changes to Python require a NEWS entry.

Please add it using the blurb_it web app or the blurb command-line tool.

@gordonmessmer gordonmessmer reopened this Apr 26, 2023
@bedevere-bot

This comment was marked as duplicate.

1 similar comment
@bedevere-bot

This comment was marked as duplicate.

@arhadthedev arhadthedev changed the title bpo-30755: Allow fallback to UTF-8 encoding on systems with no locales installed. gh-74940: Allow fallback to UTF-8 encoding on systems with no locales installed. Apr 26, 2023
@arhadthedev arhadthedev added the stdlib Python modules in the Lib dir label Apr 26, 2023
@arhadthedev
Copy link
Member

arhadthedev commented Apr 26, 2023

@vstinner @methane (as committers into Lib/locale.py)

@methane methane merged commit 2763994 into python:main Apr 26, 2023
itamaro pushed a commit to itamaro/cpython that referenced this pull request Apr 26, 2023
…ocales installed (pythonGH-14925)

This change removes the alias of the 'C' locale to 'en_US'. Because of
this alias, it is currently impossible for an application to use
setlocale() to specify a UTF-8 locale on a system that has no locales
installed, but which supports the C.UTF-8 locale/encoding.
kkalinowski-reef added a commit to reef-technologies/b2-sdk-python that referenced this pull request Dec 4, 2023
- On Linux, C.UTF-8 locale is now part of the standard. macOS and Windows
  use en_US.UTF-8 instead.
- Up to 3.11, `locale.normalize` was converting `C.UTF-8` into `en_US.UTF-8`.
  If you normalized the locale string, it was impossible to set `C.UTF-8`.
- In 3.12, `C.UTF-8` maps to itself.
- python/cpython#14925
- https://peps.python.org/pep-0538/
- `C.UTF-8` doesn't seem to be used anywhere else in the codebase, except for this one test.
- Other fix would be to inject a previous value to `locale.locale_alias` dictionary
  for certain platforms. However, this is part of the private implementation
  and could change without prior notice.
- More changes to the locale are scheduled for 3.15.
mjurbanski-reef pushed a commit to Backblaze/b2-sdk-python that referenced this pull request Dec 5, 2023
* Fix the test that broke after 3.12 changes to locale.normalize

- On Linux, C.UTF-8 locale is now part of the standard. macOS and Windows
  use en_US.UTF-8 instead.
- Up to 3.11, `locale.normalize` was converting `C.UTF-8` into `en_US.UTF-8`.
  If you normalized the locale string, it was impossible to set `C.UTF-8`.
- In 3.12, `C.UTF-8` maps to itself.
- python/cpython#14925
- https://peps.python.org/pep-0538/
- `C.UTF-8` doesn't seem to be used anywhere else in the codebase, except for this one test.
- Other fix would be to inject a previous value to `locale.locale_alias` dictionary
  for certain platforms. However, this is part of the private implementation
  and could change without prior notice.
- More changes to the locale are scheduled for 3.15.

* Format applied

* Added changelog entry for towncrier

* Prepended + to the changelog filename, as it's not closing any GitHub ticket

* Removed TODO mentioning a broken locale in CI

* Re-enabled 3.12 test matrix for both Windows and macOS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stdlib Python modules in the Lib dir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants