diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 917df54f6b..fcb627c086 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -183,6 +183,14 @@ def prints(*args, **kwargs): enc = 'utf-8' for i, arg in enumerate(args): if isinstance(arg, unicode): + if iswindows: + from calibre.utils.terminal import Detect + cs = Detect(file) + if cs.is_console: + cs.write_unicode_text(arg) + if i != len(args)-1: + file.write(bytes(sep)) + continue try: arg = arg.encode(enc) except UnicodeEncodeError: diff --git a/src/calibre/utils/logging.py b/src/calibre/utils/logging.py index 3330e42ff2..ac6e9bfcbd 100644 --- a/src/calibre/utils/logging.py +++ b/src/calibre/utils/logging.py @@ -41,19 +41,8 @@ class ANSIStream(Stream): def prints(self, level, *args, **kwargs): from calibre.utils.terminal import ColoredStream - with ColoredStream(self.stream, self.color[level]) as cs: - kwargs['file'] = self.stream - if cs.is_console: - for i, arg in enumerate(args): - if isinstance(arg, unicode): - cs.write_unicode_text(arg) - else: - self._prints(arg, end='', file=self.stream) - if i < len(args) - 1: - self._prints(kwargs.get('sep', ' '), end='', file=self.stream) - self._prints('', end=kwargs.get('end', '\n'), file=self.stream) - else: - self._prints(*args, **kwargs) + with ColoredStream(self.stream, self.color[level]): + self._prints(*args, **kwargs) def flush(self): self.stream.flush()