diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index e32c03fe13..e5e284fb5b 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -132,9 +132,12 @@ def prints(*args, **kwargs): try: arg = arg.encode(enc) except UnicodeEncodeError: - if not safe_encode: - raise - arg = repr(arg) + try: + arg = arg.encode('utf-8') + except: + if not safe_encode: + raise + arg = repr(arg) file.write(arg) if i != len(args)-1: diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 2c2a7fc135..6b95a4dcaa 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -514,7 +514,7 @@ class DocumentView(QWebView): mt = guess_type(path)[0] html = open(path, 'rb').read().decode(path.encoding, 'replace') html = EntityDeclarationProcessor(html).processed_html - has_svg = re.search(r'<\S*svg', html) is not None + has_svg = re.search(r'<[:a-z]*svg', html) is not None if 'xhtml' in mt: html = self.self_closing_pat.sub(self.self_closing_sub, html) @@ -522,6 +522,7 @@ class DocumentView(QWebView): self.manager.load_started() self.loading_url = QUrl.fromLocalFile(path) if has_svg: + prints('Rendering as XHTML...') self.setContent(QByteArray(html.encode(path.encoding)), mt, QUrl.fromLocalFile(path)) else: self.setHtml(html, self.loading_url) diff --git a/src/calibre/utils/ipc/job.py b/src/calibre/utils/ipc/job.py index 458d5adb8a..a6c39ffc6b 100644 --- a/src/calibre/utils/ipc/job.py +++ b/src/calibre/utils/ipc/job.py @@ -52,10 +52,13 @@ class BaseJob(object): else: self._status_text = _('Error') if self.failed else _('Finished') if DEBUG: - prints('Job:', self.id, self.description, 'finished', + try: + prints('Job:', self.id, self.description, 'finished', safe_encode=True) - prints('\t'.join(self.details.splitlines(True)), + prints('\t'.join(self.details.splitlines(True)), safe_encode=True) + except: + pass if not self._done_called: self._done_called = True try: