The problem is that your terminal / shell (cmd, like you on Windows) cannot print every Unicode character.
You may str.encode
encode your lines with the errors
argument of the str.encode
method. For example, can you replace unsupported characters ?
by setting errors='replace'
.
>>> s = u'\u2019' >>> print s Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\encodings\cp850.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can\'t encode character u'\u2019' in position 0: character maps to <undefined> >>> print s.encode('cp850', errors='replace') ?
See the documentation for other parameters.
Change If you want a generic logging solution, you can subclass StreamHandler
:
class CustomStreamHandler(logging.StreamHandler): def emit(self, record): record = record.encode('cp850', errors='replace') logging.StreamHandler.emit(self, record)
source share