From c9d31cb12191905e56c44753511d683ef05152a8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 27 Jul 2010 13:28:16 -0600 Subject: [PATCH] Fix #6305 (entity_to_unicode hexmess) --- src/calibre/__init__.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index f84941d371..34801d39ca 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -413,15 +413,13 @@ def entity_to_unicode(match, exceptions=[], encoding='cp1252', return check("'") if ent == 'hellips': ent = 'hellip' - if ent.lower().startswith(u'#x'): - num = int(ent[2:], 16) - if encoding is None or num > 255: - return check(my_unichr(num)) - return check(chr(num).decode(encoding)) - if ent.startswith(u'#'): + if ent.startswith('#'): try: - num = int(ent[1:]) - except ValueError: + if ent[1] in ('x', 'X'): + num = int(ent[2:], 16) + else: + num = int(ent[1:]) + except: return '&'+ent+';' if encoding is None or num > 255: return check(my_unichr(num))