Prevent encoding errors in Python Prevent encoding errors in Python windows windows

Prevent encoding errors in Python


The problem is that your terminal/shell (cmd as your are on Windows) cannot print every Unicode character.

You can fail-safe encode your strings with the errors argument of the str.encode method. For example you can replace not supported chars with ? by setting errors='replace'.

>>> s = u'\u2019'>>> print sTraceback (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 options.

Edit If you want a general solution for the logging, you can subclass StreamHandler:

class CustomStreamHandler(logging.StreamHandler):    def emit(self, record):        record = record.encode('cp850', errors='replace')        logging.StreamHandler.emit(self, record)