diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 15bd54c80c..061d0712ce 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -440,6 +440,9 @@ xml_entity_to_unicode = partial(entity_to_unicode, result_exceptions = { '>' : '>', '&' : '&'}) +def replace_entities(raw): + return _ent_pat.sub(entity_to_unicode, raw) + def prepare_string_for_xml(raw, attribute=False): raw = _ent_pat.sub(entity_to_unicode, raw) raw = raw.replace('&', '&').replace('<', '<').replace('>', '>') diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index e18a95dd2d..2a35c7cb45 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -14,7 +14,8 @@ except ImportError: from lxml import html, etree -from calibre import xml_entity_to_unicode, CurrentDir, entity_to_unicode +from calibre import xml_entity_to_unicode, CurrentDir, entity_to_unicode, \ + replace_entities from calibre.utils.filenames import ascii_filename from calibre.utils.date import parse_date from calibre.ptempfile import TemporaryDirectory @@ -70,7 +71,7 @@ class EXTHHeader(object): #else: # print 'unknown record', id, repr(content) if title: - self.mi.title = title + self.mi.title = replace_entities(title) def process_metadata(self, id, content, codec): if id == 100: