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.
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index dfe64bf..d0d17c7 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -1,20 +1,21 @@
 # Python test set -- built-in functions
 
-import platform
-import unittest
-import sys
-import warnings
+import ast
+import builtins
 import collections
 import io
+import locale
 import os
-import ast
-import types
-import builtins
-import random
-import traceback
-from test.support import TESTFN, unlink,  run_unittest, check_warnings
-from operator import neg
 import pickle
+import platform
+import random
+import sys
+import traceback
+import types
+import unittest
+import warnings
+from operator import neg
+from test.support import TESTFN, unlink,  run_unittest, check_warnings
 try:
     import pty, signal
 except ImportError:
@@ -961,6 +962,27 @@
             fp.close()
         unlink(TESTFN)
 
+    def test_open_default_encoding(self):
+        old_environ = dict(os.environ)
+        try:
+            # try to get a user preferred encoding different than the current
+            # locale encoding to check that open() uses the current locale
+            # encoding and not the user preferred encoding
+            for key in ('LC_ALL', 'LANG', 'LC_CTYPE'):
+                if key in os.environ:
+                    del os.environ[key]
+
+            self.write_testfile()
+            current_locale_encoding = locale.getpreferredencoding(False)
+            fp = open(TESTFN, 'w')
+            try:
+                self.assertEqual(fp.encoding, current_locale_encoding)
+            finally:
+                fp.close()
+        finally:
+            os.environ.clear()
+            os.environ.update(old_environ)
+
     def test_ord(self):
         self.assertEqual(ord(' '), 32)
         self.assertEqual(ord('A'), 65)