Issue #23672: Allow Idle to edit and run files with astral chars in name.

Patch by Mohd Sanad Zaki Rizvi.
This commit is contained in:
Terry Jan Reedy 2015-08-06 00:54:07 -04:00
parent 8c125eb44b
commit 5c28e9f887
3 changed files with 27 additions and 9 deletions

View file

@ -344,19 +344,19 @@ class EditorWindow(object):
def _filename_to_unicode(self, filename):
"""convert filename to unicode in order to display it in Tk"""
if isinstance(filename, str) or not filename:
return filename
else:
"""Return filename as BMP unicode so diplayable in Tk."""
# Decode bytes to unicode.
if isinstance(filename, bytes):
try:
return filename.decode(self.filesystemencoding)
filename = filename.decode(self.filesystemencoding)
except UnicodeDecodeError:
# XXX
try:
return filename.decode(self.encoding)
filename = filename.decode(self.encoding)
except UnicodeDecodeError:
# byte-to-byte conversion
return filename.decode('iso8859-1')
filename = filename.decode('iso8859-1')
# Replace non-BMP char with diamond questionmark.
return re.sub('[\U00010000-\U0010FFFF]', '\ufffd', filename)
def new_callback(self, event):
dirname, basename = self.io.defaultfilename()