diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2012-06-05 11:43:22 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2012-06-05 11:43:22 (GMT) |
commit | f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69 (patch) | |
tree | 9d249e4c06f25885dc668edd529b1a4c802c898a /Modules/_io | |
parent | 91c5a34613fb918c79bb372723e10e106ad9a9be (diff) | |
download | cpython-f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69.zip cpython-f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69.tar.gz cpython-f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69.tar.bz2 |
Close #11022: TextIOWrapper doesn't call locale.setlocale() anymore
open() and io.TextIOWrapper are now calling locale.getpreferredencoding(False)
instead of locale.getpreferredencoding() in text mode if the encoding is not
specified. Don't change temporary the locale encoding using locale.setlocale(),
use the current locale encoding instead of the user preferred encoding.
Explain also in open() documentation that locale.getpreferredencoding(False) is
called if the encoding is not specified.
Diffstat (limited to 'Modules/_io')
-rw-r--r-- | Modules/_io/_iomodule.c | 5 | ||||
-rw-r--r-- | Modules/_io/textio.c | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index 31eea3c..61b9f52 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -112,8 +112,9 @@ PyDoc_STRVAR(open_doc, "'a' for appending (which on some Unix systems, means that all writes\n" "append to the end of the file regardless of the current seek position).\n" "In text mode, if encoding is not specified the encoding used is platform\n" -"dependent. (For reading and writing raw bytes use binary mode and leave\n" -"encoding unspecified.) The available modes are:\n" +"dependent: locale.getpreferredencoding(False) is called to get the\n" +"current locale encoding. (For reading and writing raw bytes use binary\n" +"mode and leave encoding unspecified.) The available modes are:\n" "\n" "========= ===============================================================\n" "Character Meaning\n" diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index ae105e5..287f165 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -630,7 +630,7 @@ PyDoc_STRVAR(textiowrapper_doc, "Character and line based layer over a BufferedIOBase object, buffer.\n" "\n" "encoding gives the name of the encoding that the stream will be\n" - "decoded or encoded with. It defaults to locale.getpreferredencoding.\n" + "decoded or encoded with. It defaults to locale.getpreferredencoding(False).\n" "\n" "errors determines the strictness of encoding and decoding (see the\n" "codecs.register) and defaults to \"strict\".\n" @@ -898,7 +898,7 @@ textiowrapper_init(textio *self, PyObject *args, PyObject *kwds) else { use_locale: self->encoding = _PyObject_CallMethodId( - state->locale_module, &PyId_getpreferredencoding, NULL); + state->locale_module, &PyId_getpreferredencoding, "O", Py_False); if (self->encoding == NULL) { catch_ImportError: /* |