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