его необходимо заставить возвращать строку в юникоде
# -*- coding: utf-8 -*-
# file:tt.py
class Test():
def __str__(self):
return u'%.2f монет'%500
>>> import tt
>>> t=tt.Test()
>>> print t
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-11: ordinal not in range(128)
>>> import tt
>>> t=tt.Test()
>>> str(t)
'500.00 \xd0\xbc\xd0\xbe\xd0\xbd\xd0\xb5\xd1\x82'
>>> print t
500.00 монет
Как это исправить?