diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 39b9b34174..a2b2790ed9 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -43,7 +43,7 @@ class SafeFormat(string.Formatter): ign, v = mi.format_field(key, series_with_index=False) if v is None: return '' - if v is '': + if v == '': return '' return prefix + v + suffix except: @@ -444,7 +444,7 @@ class Metadata(object): res = format_date(res, cmeta['display'].get('date_format','dd MMM yyyy')) elif datatype == 'bool': res = _('Yes') if res else _('No') - return (name, res, orig_res, cmeta) + return (name, unicode(res), orig_res, cmeta) if key in field_metadata and field_metadata[key]['kind'] == 'field': res = self.get(key, None) @@ -462,7 +462,7 @@ class Metadata(object): res = res + ' [%s]'%self.format_series_index() elif datatype == 'datetime': res = format_date(res, fmeta['display'].get('date_format','dd MMM yyyy')) - return (name, res, orig_res, fmeta) + return (name, unicode(res), orig_res, fmeta) return (None, None, None, None) diff --git a/src/calibre/library/save_to_disk.py b/src/calibre/library/save_to_disk.py index 19727deb17..90e5413389 100644 --- a/src/calibre/library/save_to_disk.py +++ b/src/calibre/library/save_to_disk.py @@ -101,7 +101,8 @@ def preprocess_template(template): template = template.decode(preferred_encoding, 'replace') return template -template_value_re = re.compile(r'^([^\|]*(?=\|))(?:\|?)([^\|]*)(?:\|?)((?<=\|).*?)$') +template_value_re = re.compile(r'^([^\|]*(?=\|))(?:\|?)([^\|]*)(?:\|?)((?<=\|).*?)$', + flags= re.UNICODE) def explode_string_template_value(key): try: @@ -120,7 +121,7 @@ class SafeFormat(string.Formatter): try: prefix, key, suffix = explode_string_template_value(key) if kwargs[key]: - return prefix + kwargs[key] + suffix + return prefix + unicode(kwargs[key]) + suffix return '' except: return ''