diff --git a/src/calibre/ebooks/mobi/utils.py b/src/calibre/ebooks/mobi/utils.py index ae8e583a1b..dfdb73fdff 100644 --- a/src/calibre/ebooks/mobi/utils.py +++ b/src/calibre/ebooks/mobi/utils.py @@ -302,7 +302,7 @@ def encode_tbs(val, extra, flag_size=4): ans += encint(extra[0b0001]) return ans -def utf8_text(text): +def utf8_text(text, empty=False): ''' Convert a possibly null string to utf-8 bytes, guaranteeing to return a non empty, normalized bytestring. @@ -313,7 +313,10 @@ def utf8_text(text): text = text.decode('utf-8', 'replace') text = normalize(text).encode('utf-8') else: - text = _('Unknown').encode('utf-8') + if not empty: + text = _('Unknown').encode('utf-8') + else: + text = u''.encode('utf-8') # yeah, stupid return text def align_block(raw, multiple=4, pad=b'\0'): diff --git a/src/calibre/ebooks/mobi/writer2/serializer.py b/src/calibre/ebooks/mobi/writer2/serializer.py index 5251bf934f..87b42cd601 100644 --- a/src/calibre/ebooks/mobi/writer2/serializer.py +++ b/src/calibre/ebooks/mobi/writer2/serializer.py @@ -355,7 +355,7 @@ class Serializer(object): text = text.replace(u'\u00AD', '') # Soft-hyphen if quot: text = text.replace('"', '"') - self.buf.write(utf8_text(text)) + self.buf.write(utf8_text(text, empty=True)) def fixup_links(self): '''