diff options
Diffstat (limited to 'Lib/_pyio.py')
-rw-r--r-- | Lib/_pyio.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Lib/_pyio.py b/Lib/_pyio.py index e3ff59e..0f33ed5 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -1988,7 +1988,7 @@ class TextIOWrapper(TextIOBase): r"""Character and line based layer over a BufferedIOBase object, buffer. encoding gives the name of the encoding that the stream will be - decoded or encoded with. It defaults to locale.getpreferredencoding(False). + decoded or encoded with. It defaults to locale.getencoding(). errors determines the strictness of encoding and decoding (see the codecs.register) and defaults to "strict". @@ -2021,7 +2021,9 @@ class TextIOWrapper(TextIOBase): self._check_newline(newline) encoding = text_encoding(encoding) - if encoding == "locale": + if encoding == "locale" and sys.platform == "win32": + # On Unix, os.device_encoding() returns "utf-8" instead of locale encoding + # in the UTF-8 mode. So we use os.device_encoding() only on Windows. try: encoding = os.device_encoding(buffer.fileno()) or "locale" except (AttributeError, UnsupportedOperation): @@ -2034,7 +2036,7 @@ class TextIOWrapper(TextIOBase): # Importing locale may fail if Python is being built encoding = "utf-8" else: - encoding = locale.getpreferredencoding(False) + encoding = locale.getencoding() if not isinstance(encoding, str): raise ValueError("invalid encoding: %r" % encoding) |