From 8c4650977c5b03710fb89d569dc248771078c976 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Jun 2015 03:22:29 +0530 Subject: [PATCH] AZW3 Input: Ignore incorrect text encoding (incorrectly encoded bytes are now replaced by placeholders) instead of erroring out. Fixes #1465769 [convert file failed: azw3 -> mobi](https://bugs.launchpad.net/calibre/+bug/1465769) --- src/calibre/ebooks/mobi/reader/markup.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/mobi/reader/markup.py b/src/calibre/ebooks/mobi/reader/markup.py index 9f68b2ab04..69c70addb7 100644 --- a/src/calibre/ebooks/mobi/reader/markup.py +++ b/src/calibre/ebooks/mobi/reader/markup.py @@ -49,7 +49,11 @@ def update_internal_links(mobi8_reader, log): tag = posfid_index_pattern.sub(b'"' + replacement + b'"', tag, 1) srcpieces[j] = tag raw = b''.join(srcpieces) - parts.append(raw.decode(mr.header.codec)) + try: + parts.append(raw.decode(mr.header.codec)) + except UnicodeDecodeError: + log.warn('Failed to decode text in KF8 part, replacing bad bytes') + parts.append(raw.decode(mr.header.codec, 'replace')) # All parts are now unicode and have no internal links return parts