diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-05-17 10:53:54 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-05-17 10:53:54 (GMT) |
commit | 4b2c468e7464dc29700b50afcfc0bf101bea7fb8 (patch) | |
tree | c9e93aee511c3acccaf8b91ab19d13bd19fab579 /Lib/idlelib | |
parent | c8059e48f2963acfcc3682bc9ee91b80ee3e501b (diff) | |
download | cpython-4b2c468e7464dc29700b50afcfc0bf101bea7fb8.zip cpython-4b2c468e7464dc29700b50afcfc0bf101bea7fb8.tar.gz cpython-4b2c468e7464dc29700b50afcfc0bf101bea7fb8.tar.bz2 |
Issue #15809: IDLE shell now uses locale encoding instead of Latin1 for
decoding unicode literals.
Diffstat (limited to 'Lib/idlelib')
-rwxr-xr-x | Lib/idlelib/PyShell.py | 8 | ||||
-rw-r--r-- | Lib/idlelib/run.py | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 17ca0ef..8ee0c0e 100755 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -34,6 +34,7 @@ from idlelib import rpc from idlelib import Debugger from idlelib import RemoteDebugger from idlelib import macosxSupport +from idlelib import IOBinding IDENTCHARS = string.ascii_letters + string.digits + "_" HOST = '127.0.0.1' # python execution server on localhost loopback @@ -668,10 +669,11 @@ class ModifiedInterpreter(InteractiveInterpreter): self.more = 0 self.save_warnings_filters = warnings.filters[:] warnings.filterwarnings(action="error", category=SyntaxWarning) - if isinstance(source, unicode): - from idlelib import IOBinding + if isinstance(source, unicode) and IOBinding.encoding != 'utf-8': try: - source = source.encode(IOBinding.encoding) + source = '# -*- coding: %s -*-\n%s' % ( + IOBinding.encoding, + source.encode(IOBinding.encoding)) except UnicodeError: self.tkconsole.resetoutput() self.write("Unsupported characters in input\n") diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py index 6ffc1b9..d023e28 100644 --- a/Lib/idlelib/run.py +++ b/Lib/idlelib/run.py @@ -210,6 +210,8 @@ def cleanup_traceback(tb, exclude): fn, ln, nm, line = tb[i] if nm == '?': nm = "-toplevel-" + if fn.startswith("<pyshell#") and IOBinding.encoding != 'utf-8': + ln -= 1 # correction for coding cookie if not line and fn.startswith("<pyshell#"): line = rpchandler.remotecall('linecache', 'getline', (fn, ln), {}) |