From 80dad7f79a651edea387fc0d9a64893c0ec5d704 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 29 Sep 2008 11:54:33 -0700 Subject: [PATCH] Fix #1093 (epub conversion from mobi fails) --- src/calibre/ebooks/metadata/opf2.py | 9 +++++++-- src/calibre/ebooks/mobi/reader.py | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/metadata/opf2.py b/src/calibre/ebooks/metadata/opf2.py index be0a38bad3..c49f89d506 100644 --- a/src/calibre/ebooks/metadata/opf2.py +++ b/src/calibre/ebooks/metadata/opf2.py @@ -534,10 +534,15 @@ class OPF(object): return self.guide_path(self.root) def unquote_urls(self): + def get_href(item): + raw = unquote(item.get('href', '')) + if not isinstance(raw, unicode): + raw = raw.decode('utf-8') + return raw for item in self.itermanifest(): - item.set('href', unquote(item.get('href', ''))) + item.set('href', get_href(item)) for item in self.iterguide(): - item.set('href', unquote(item.get('href', ''))) + item.set('href', get_href(item)) @apply def authors(): diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index 2c9969421a..5a4a729bb7 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -160,7 +160,7 @@ class MobiReader(object): self.book_header = BookHeader(self.sections[0][0], self.ident) - + self.name = self.name.decode(self.book_header.codec, 'replace') def extract_content(self, output_dir=os.getcwdu()): output_dir = os.path.abspath(output_dir)