sys.stdout.write encoding failure
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?
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
participants (2)
-
Alexander Belopolsky
-
Amaury Forgeot d'Arc