diff --git a/src/calibre/ebooks/pdb/ereader/writer.py b/src/calibre/ebooks/pdb/ereader/writer.py index cae9f3838c..2f13147180 100644 --- a/src/calibre/ebooks/pdb/ereader/writer.py +++ b/src/calibre/ebooks/pdb/ereader/writer.py @@ -67,7 +67,7 @@ class Writer(FormatWriter): lengths = [len(i) if i not in images else len(i[0]) + len(i[1]) for i in sections] - pdbHeaderBuilder = PdbHeaderBuilder(IDENTITY, metadata[0].partition('\x00')[0]) + pdbHeaderBuilder = PdbHeaderBuilder(IDENTITY, metadata[0].partition(b'\x00')[0]) pdbHeaderBuilder.build_header(lengths, out_stream) for item in sections: diff --git a/src/calibre/ebooks/pdb/header.py b/src/calibre/ebooks/pdb/header.py index 4f3bd475d0..b85be834a1 100644 --- a/src/calibre/ebooks/pdb/header.py +++ b/src/calibre/ebooks/pdb/header.py @@ -70,7 +70,9 @@ class PdbHeaderBuilder: def __init__(self, identity, title): self.identity = identity.ljust(3, '\x00')[:8].encode('utf-8') - self.title = b'%s\x00' % re.sub('[^-A-Za-z0-9 ]+', '_', title).ljust(31, '\x00')[:31].encode('ascii', 'replace') + if isinstance(title, str): + title = title.encode('ascii', 'replace') + self.title = b'%s\x00' % re.sub(b'[^-A-Za-z0-9 ]+', b'_', title).ljust(31, b'\x00')[:31] def build_header(self, section_lengths, out_stream): '''