Похоже, ваша переменная text
содержит не-ASCII строку.
См .:
>>> mystring = u"élève"
>>> mystring
u'\xe9l\xe8ve'
>>> str(mystring)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)
Итак, сначала вам нужно закодировать вашу строку в UTF-8
:
>>> str(mystring.encode("utf-8"))
'\xc3\xa9l\xc3\xa8ve'
Или, если (как показывают комментарии) text
может содержать другие типы переменных, кроме строк, используйте
self.output += unicode(mystring).encode("utf-8")