Ricardo Bugalho wrote: > Hello, > I'm using Python 2.3.4 and I noticed that, when stdout is a terminal, > the 'print' statement converts Unicode strings into the encoding > defined by the locales instead of the one returned by > sys.getdefaultencoding().
Sure. It uses the encoding of you console. Here is explanation why it uses locale to get the encoding of console: http://www.python.org/moin/PrintFails > However, I can't find any references to it. Anyone knows where it's > descrbed? I've just wrote about it here: http://www.python.org/moin/DefaultEncoding > > Example: > > !/usr/bin/env python > # -*- coding: utf-8 -*- > > import sys, locale > > print 'Python encoding:', sys.getdefaultencoding() > print 'System encoding:', locale.getpreferredencoding() > print 'Test string: ', u'Olá mundo' > > > If stdout is a terminal, works fine > $ python x.py > Python encoding: ascii > System encoding: UTF-8 > Test string: Olá mundo > > If I redirect the output to a file, raises an UnicodeEncodeError exception > $ python x.py > x.txt > Traceback (most recent call last): > File "x.py", line 8, in ? > print 'Test string: ', u'Olá mundo' > UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 2: ordinal not in range(128) > http://www.python.org/moin/ShellRedirectionFails Feel free to reply here if something is not clear, corrections in wiki are also welcome. Serge. -- http://mail.python.org/mailman/listinfo/python-list