Hi, Alexander Belopolsky wrote: > There is currently a unit test in the trunk that fails in verbose mode: > > $ ./python.exe Lib/test/test_doctest.py -v > ... > UnicodeEncodeError: 'ascii' codec can't encode characters in position > 338-339: ordinal not in range(128) > > Apparently, the problem is that stdout cannot encode non-ascii characters: > >>>> sys.stdout.write(u'f\xf6\xf6') > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > UnicodeEncodeError: 'ascii' codec can't encode characters in position > 1-2: ordinal not in range(128) > > which is strange because > >>>> sys.stdout.encoding > 'UTF-8' > > and print has no problem with the same string: >>>> print u'f\xf6\xf6' > föö > > > Where does 'ascii' codec come from?
It's sys.getdefaultencoding default value. sys.stdout.write() expects a bytes string. What you see here is the coercion of the unicode to a string. -- Amaury Forgeot d'Arc _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com