diff --git a/src/calibre/parallel.py b/src/calibre/parallel.py
index 0b543ea27f..339bdc761b 100644
--- a/src/calibre/parallel.py
+++ b/src/calibre/parallel.py
@@ -31,7 +31,7 @@ from threading import RLock, Thread, Event
from math import ceil
from calibre.ptempfile import PersistentTemporaryFile
-from calibre import iswindows, detect_ncpus, isosx
+from calibre import iswindows, detect_ncpus, isosx, preferred_encoding
from calibre.utils.config import prefs
DEBUG = False
@@ -614,8 +614,10 @@ class Job(object):
if isinstance(self.log, str):
self.log = unicode(self.log, 'utf-8', 'replace')
ans.extend(self.log.split('\n'))
-
- return '
'.join(ans)
+
+ ans = [x.decode(preferred_encoding, 'replace') if isinstance(x, 'str') else x for x in ans]
+
+ return u'
'.join(ans)
class ParallelJob(Job):