diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2002-08-10 12:22:12 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2002-08-10 12:22:12 (GMT) |
commit | 75ea1e11dcb90c768af6a222ae8e20a4f532617d (patch) | |
tree | fe1c3b7ac1e5e7876b0daa799056bd6032147c52 | |
parent | 3ddb856ed1fcfbfb750b00a60b9a5df76555751e (diff) | |
download | cpython-75ea1e11dcb90c768af6a222ae8e20a4f532617d.zip cpython-75ea1e11dcb90c768af6a222ae8e20a4f532617d.tar.gz cpython-75ea1e11dcb90c768af6a222ae8e20a4f532617d.tar.bz2 |
Convert characters from the locale's encoding on output.
Reject characters outside the locale's encoding on input.
-rw-r--r-- | Tools/idle/OutputWindow.py | 9 | ||||
-rw-r--r-- | Tools/idle/PyShell.py | 7 |
2 files changed, 15 insertions, 1 deletions
diff --git a/Tools/idle/OutputWindow.py b/Tools/idle/OutputWindow.py index f429f2e..0e7fba2 100644 --- a/Tools/idle/OutputWindow.py +++ b/Tools/idle/OutputWindow.py @@ -2,6 +2,7 @@ from Tkinter import * from EditorWindow import EditorWindow import re import tkMessageBox +import IOBinding class OutputWindow(EditorWindow): @@ -34,6 +35,14 @@ class OutputWindow(EditorWindow): # Act as output file def write(self, s, tags=(), mark="insert"): + # Tk assumes that byte strings are Latin-1; + # we assume that they are in the locale's encoding + if isinstance(s, str): + try: + s = unicode(s, IOBinding.encoding) + except UnicodeError: + # some other encoding; let Tcl deal with it + pass self.text.insert(mark, s, tags) self.text.see(mark) self.text.update() diff --git a/Tools/idle/PyShell.py b/Tools/idle/PyShell.py index 31a8940..e71a9a1 100644 --- a/Tools/idle/PyShell.py +++ b/Tools/idle/PyShell.py @@ -191,7 +191,12 @@ class ModifiedInterpreter(InteractiveInterpreter): warnings.filterwarnings(action="error", category=SyntaxWarning) if isinstance(source, types.UnicodeType): import IOBinding - source = source.encode(IOBinding.encoding) + try: + source = source.encode(IOBinding.encoding) + except UnicodeError: + self.tkconsole.resetoutput() + self.write("Unsupported characters in input") + return try: return InteractiveInterpreter.runsource(self, source, filename) finally: |