Convert characters from the locale's encoding on output.
Reject characters outside the locale's encoding on input.
This commit is contained in:
parent
3ddb856ed1
commit
75ea1e11dc
|
@ -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()
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue