From 02091a0fa631a12a04b03c4fa338a5f1d05206c0 Mon Sep 17 00:00:00 2001 From: "Marshall T. Vandegrift" Date: Mon, 2 Feb 2009 11:26:06 -0500 Subject: [PATCH] Fix super-nasty character decoding error. --- src/calibre/ebooks/oeb/base.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py index 854f8bef94..9ba5d95899 100644 --- a/src/calibre/ebooks/oeb/base.py +++ b/src/calibre/ebooks/oeb/base.py @@ -1387,12 +1387,18 @@ class OEBBook(object): def decode(self, data): if isinstance(data, unicode): return data - encodings = ['utf-8', 'utf-16'] - if self.encoding is not None: - encodings.append(self.encoding) - for encoding in encodings: + if data[:2] in ('\xff\xfe', '\xfe\xff'): try: - return data.decode(encoding) + return data.decode('utf-16') + except UnicodeDecodeError: + pass + try: + return data.decode('utf-8') + except UnicodeDecodeError: + pass + if self.encoding is not None: + try: + return data.decode(self.encoding) except UnicodeDecodeError: pass data, _ = xml_to_unicode(data)