New submission from Serhiy Storchaka: Currently pprint.pprint() fails on unencodable characters.
$ LANG=en_US.utf8 ./python -c "import pprint; pprint.pprint('\u20ac')" '€' $ LANG= ./python -c "import pprint; pprint.pprint('\u20ac')" Traceback (most recent call last): File "<string>", line 1, in <module> File "/home/serhiy/py/cpython/Lib/pprint.py", line 56, in pprint printer.pprint(object) File "/home/serhiy/py/cpython/Lib/pprint.py", line 137, in pprint self._format(object, self._stream, 0, 0, {}, 0) File "/home/serhiy/py/cpython/Lib/pprint.py", line 274, in _format write(rep) UnicodeEncodeError: 'ascii' codec can't encode character '\u20ac' in position 1: ordinal not in range(128) This is a regression from Python 2 in which repr() always returns ascii string. $ LANG= python2.7 -c "import pprint; pprint.pprint(u'\u20ac')" u'\u20ac' Perhaps pprint() should use the backslashreplace error handler (as sys.displayhook()). With the proposed patch: $ LANG= ./python -c "import pprint; pprint.pprint('\u20ac')" '\u20ac' ---------- components: Library (Lib), Unicode files: pprint_unencodable.patch keywords: patch messages: 198465 nosy: ezio.melotti, fdrake, pitrou, serhiy.storchaka priority: normal severity: normal stage: patch review status: open title: Use backslashreplace in pprint type: behavior versions: Python 3.3, Python 3.4 Added file: http://bugs.python.org/file31881/pprint_unencodable.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue19100> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com