mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
gh-93099: Fix _pyio to use locale module properly (gh-93136)
(cherry picked from commit f7fabae75c
)
Co-authored-by: Dong-hee Na <donghee.na@python.org>
This commit is contained in:
parent
fd35be511a
commit
97fe65a7be
2 changed files with 15 additions and 8 deletions
19
Lib/_pyio.py
19
Lib/_pyio.py
|
@ -2022,13 +2022,7 @@ class TextIOWrapper(TextIOBase):
|
|||
encoding = text_encoding(encoding)
|
||||
|
||||
if encoding == "locale":
|
||||
try:
|
||||
import locale
|
||||
except ImportError:
|
||||
# Importing locale may fail if Python is being built
|
||||
encoding = "utf-8"
|
||||
else:
|
||||
encoding = locale.getencoding()
|
||||
encoding = self._get_locale_encoding()
|
||||
|
||||
if not isinstance(encoding, str):
|
||||
raise ValueError("invalid encoding: %r" % encoding)
|
||||
|
@ -2162,7 +2156,7 @@ class TextIOWrapper(TextIOBase):
|
|||
if not isinstance(encoding, str):
|
||||
raise TypeError("invalid encoding: %r" % encoding)
|
||||
if encoding == "locale":
|
||||
encoding = locale.getencoding()
|
||||
encoding = self._get_locale_encoding()
|
||||
|
||||
if newline is Ellipsis:
|
||||
newline = self._readnl
|
||||
|
@ -2267,6 +2261,15 @@ class TextIOWrapper(TextIOBase):
|
|||
self._decoded_chars_used += len(chars)
|
||||
return chars
|
||||
|
||||
def _get_locale_encoding(self):
|
||||
try:
|
||||
import locale
|
||||
except ImportError:
|
||||
# Importing locale may fail if Python is being built
|
||||
return "utf-8"
|
||||
else:
|
||||
return locale.getencoding()
|
||||
|
||||
def _rewind_decoded_chars(self, n):
|
||||
"""Rewind the _decoded_chars buffer."""
|
||||
if self._decoded_chars_used < n:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue