From d45da570474791f33aa09fdbc3aab5bc3911d596 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Feb 2010 11:46:21 -0700 Subject: [PATCH] MOBI metadata: Handle setting of non-ascii titles correctly --- src/calibre/ebooks/metadata/mobi.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py index 1de73d7dd4..3791a14b22 100644 --- a/src/calibre/ebooks/metadata/mobi.py +++ b/src/calibre/ebooks/metadata/mobi.py @@ -187,6 +187,8 @@ class MetadataUpdater(object): def create_exth(self, new_title=None, exth=None): # Add an EXTH block to record 0, rewrite the stream # self.hexdump(self.record0) + if isinstance(new_title, unicode): + new_title = new_title.encode(self.codec, 'replace') # Fetch the existing title title_offset, = unpack('>L', self.record0[0x54:0x58]) @@ -219,12 +221,7 @@ class MetadataUpdater(object): new_record0 = StringIO() new_record0.write(self.record0[:0x10 + mobi_header_length]) new_record0.write(exth) - if new_title: - #new_record0.write(new_title.encode(self.codec, 'replace')) - new_title = (new_title or _('Unknown')).encode(self.codec, 'replace') - new_record0.write(new_title) - else: - new_record0.write(title_in_file) + new_record0.write(new_title if new_title else title_in_file) # Pad to a 4-byte boundary trail = len(new_record0.getvalue()) % 4