Convert characters from the locale's encoding on output.

Reject characters outside the locale's encoding on input.
This commit is contained in:
Martin v. Löwis 2002-08-10 12:22:12 +00:00
parent 3ddb856ed1
commit 75ea1e11dc
2 changed files with 15 additions and 1 deletions

View File

@ -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()

View File

@ -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: