mirror of
https://github.com/python/cpython.git
synced 2025-07-08 03:45:36 +00:00
bpo-13153: Use OS native encoding for converting between Python and Tcl. (GH-16545)
On Windows use UTF-16 (or UTF-32 for 32-bit Tcl_UniChar) with the "surrogatepass" error handler for converting to/from Tcl Unicode objects. On Linux use UTF-8 with the "surrogateescape" error handler for converting to/from Tcl String objects. Converting strings from Tcl to Python and back now never fails (except MemoryError).
This commit is contained in:
parent
2290b23dfc
commit
06cb94bc84
9 changed files with 241 additions and 242 deletions
|
@ -679,14 +679,6 @@ class ModifiedInterpreter(InteractiveInterpreter):
|
|||
self.more = 0
|
||||
# at the moment, InteractiveInterpreter expects str
|
||||
assert isinstance(source, str)
|
||||
#if isinstance(source, str):
|
||||
# from idlelib import iomenu
|
||||
# try:
|
||||
# source = source.encode(iomenu.encoding)
|
||||
# except UnicodeError:
|
||||
# self.tkconsole.resetoutput()
|
||||
# self.write("Unsupported characters in input\n")
|
||||
# return
|
||||
# InteractiveInterpreter.runsource() calls its runcode() method,
|
||||
# which is overridden (see below)
|
||||
return InteractiveInterpreter.runsource(self, source, filename)
|
||||
|
@ -1298,16 +1290,6 @@ class PyShell(OutputWindow):
|
|||
self.set_line_and_column()
|
||||
|
||||
def write(self, s, tags=()):
|
||||
if isinstance(s, str) and len(s) and max(s) > '\uffff':
|
||||
# Tk doesn't support outputting non-BMP characters
|
||||
# Let's assume what printed string is not very long,
|
||||
# find first non-BMP character and construct informative
|
||||
# UnicodeEncodeError exception.
|
||||
for start, char in enumerate(s):
|
||||
if char > '\uffff':
|
||||
break
|
||||
raise UnicodeEncodeError("UCS-2", char, start, start+1,
|
||||
'Non-BMP character not supported in Tk')
|
||||
try:
|
||||
self.text.mark_gravity("iomark", "right")
|
||||
count = OutputWindow.write(self, s, tags, "iomark")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue