summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/EditorWindow.py
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2015-08-06 04:54:07 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2015-08-06 04:54:07 (GMT)
commit5c28e9f887d8a8089d4e5ed6060e61a0da5afbe2 (patch)
tree3986f06cc566919ce3c52518a10a8acd4cee4de8 /Lib/idlelib/EditorWindow.py
parent8c125eb44b528ba22b43cdf5da49e408082865fa (diff)
downloadcpython-5c28e9f887d8a8089d4e5ed6060e61a0da5afbe2.zip
cpython-5c28e9f887d8a8089d4e5ed6060e61a0da5afbe2.tar.gz
cpython-5c28e9f887d8a8089d4e5ed6060e61a0da5afbe2.tar.bz2
Issue #23672: Allow Idle to edit and run files with astral chars in name.
Patch by Mohd Sanad Zaki Rizvi.
Diffstat (limited to 'Lib/idlelib/EditorWindow.py')
-rw-r--r--Lib/idlelib/EditorWindow.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index 6dbbe09..3ac68bb 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -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()