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))