"Gabriel Genellina" <[email protected]> writes:
> En Wed, 21 Oct 2009 06:24:55 -0300, Lele Gaifax <[email protected]>
> escribió:
>
>> "Gabriel Genellina" <[email protected]> writes:
>>
> nosetest should do nothing special. You should configure the environment
> so Python *knows* that your console understands utf-8. Once Python is
> aware of the *real* encoding your console is using, sys.stdout.encoding
> will be utf-8 automatically and your problem is solved. I don't know how
> to do that within virtualenv, but the answer certainly does NOT involve
> sys.setdefaultencoding()
>
> On Windows, a "normal" console window on my system uses cp850:
>
>
> D:\USERDATA\Gabriel>chcp
> Tabla de códigos activa: 850
>
> D:\USERDATA\Gabriel>python
> Python 2.6.3 (r263rc1:75186, Oct 2 2009, 20:40:30) [MSC v.1500 32 bit
> (Intel)]
> on win32
> Type "help", "copyright", "credits" or "license" for more information.
> py> import sys
> py> sys.getdefaultencoding()
> 'ascii'
> py> sys.stdout.encoding
> 'cp850'
> py> u = u"áñç"
> py> print u
> áñç
This is the same on my virtualenv:
$ python -c "import sys; print sys.getdefaultencoding(),
sys.stdout.encoding"
ascii UTF-8
$ python -c "print u'\xe1\xf1\xe7'"
áñç
But look at this:
$ cat test.py
# -*- coding: utf-8 -*-
class TestAccents(object):
u'\xe1\xf1\xe7'
def test_simple(self):
u'cioè'
pass
$ nosetests test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
$ nosetests -v test.py
ERROR
======================================================================
Traceback (most recent call last):
File "/tmp/env/bin/nosetests", line 8, in <module>
load_entry_point('nose==0.11.1', 'console_scripts', 'nosetests')()
File
"/tmp/env/lib/python2.6/site-packages/nose-0.11.1-py2.6.egg/nose/core.py", line
113, in __init__
argv=argv, testRunner=testRunner, testLoader=testLoader)
File "/usr/lib/python2.6/unittest.py", line 817, in __init__
self.runTests()
File
"/tmp/env/lib/python2.6/site-packages/nose-0.11.1-py2.6.egg/nose/core.py", line
192, in runTests
result = self.testRunner.run(self.test)
File
"/tmp/env/lib/python2.6/site-packages/nose-0.11.1-py2.6.egg/nose/core.py", line
63, in run
result.printErrors()
File
"/tmp/env/lib/python2.6/site-packages/nose-0.11.1-py2.6.egg/nose/result.py",
line 81, in printErrors
_TextTestResult.printErrors(self)
File "/usr/lib/python2.6/unittest.py", line 724, in printErrors
self.printErrorList('ERROR', self.errors)
File "/usr/lib/python2.6/unittest.py", line 730, in printErrorList
self.stream.writeln("%s: %s" % (flavour,self.getDescription(test)))
File "/usr/lib/python2.6/unittest.py", line 665, in writeln
if arg: self.write(arg)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in
position 10: ordinal not in range(128)
Who is the culprit here?
The fact is, encodings are the real Y2k problem, and they are here to
stay for a while!
thank you,
ciao, lele.
--
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
[email protected] | -- Fortunato Depero, 1929.
--
http://mail.python.org/mailman/listinfo/python-list