diff --git a/src/calibre/ebooks/mobi/reader/markup.py b/src/calibre/ebooks/mobi/reader/markup.py index 8a06bc346a..079eb90590 100644 --- a/src/calibre/ebooks/mobi/reader/markup.py +++ b/src/calibre/ebooks/mobi/reader/markup.py @@ -111,7 +111,11 @@ def update_flow_links(mobi8_reader, resource_map, log): continue if not isinstance(flow, unicode): - flow = flow.decode(mr.header.codec) + try: + flow = flow.decode(mr.header.codec) + except UnicodeDecodeError: + log.error('Flow part has invalid %s encoded bytes'%mr.header.codec) + flow = flow.decode(mr.header.codec, 'replace') # links to raster image files from image tags # image_pattern diff --git a/src/calibre/ebooks/mobi/reader/mobi8.py b/src/calibre/ebooks/mobi/reader/mobi8.py index dcf2f998b2..8040a89e15 100644 --- a/src/calibre/ebooks/mobi/reader/mobi8.py +++ b/src/calibre/ebooks/mobi/reader/mobi8.py @@ -207,9 +207,9 @@ class Mobi8Reader(object): fname = 'svgimg' + nstr + '.svg' else: # search for CDATA and if exists inline it - if flowpart.find('[CDATA[') >= 0: + if flowpart.find(b'[CDATA[') >= 0: typ = 'css' - flowpart = '\n' + flowpart = b'\n' format = 'inline' dir = None fname = None