diff -r 8480179d2a7f Lib/http/server.py --- a/Lib/http/server.py Thu Aug 07 19:39:30 2014 +0300 +++ b/Lib/http/server.py Thu Aug 07 21:24:31 2014 +0300 @@ -747,7 +747,12 @@ return None list.sort(key=lambda a: a.lower()) r = [] - displaypath = html.escape(urllib.parse.unquote(self.path)) + try: + displaypath = urllib.parse.unquote(self.path, + errors='surrogatepass') + except UnicodeDecodeError: + displaypath = urllib.parse.unquote(path) + displaypath = html.escape(displaypath) enc = sys.getfilesystemencoding() title = 'Directory listing for %s' % displaypath r.append('%s' - % (urllib.parse.quote(linkname), html.escape(displayname))) + % (urllib.parse.quote(linkname, + errors='surrogatepass'), + html.escape(displayname))) r.append('\n