Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack hat geschrieben:
Also die Frage ist immer noch wobei *genau* der Fehler auftritt. Wenn ich mal raten müsste, mischt Du irgendwo Unicode mit normalen Zeichenketten und die normale Zeichenkette enthält Bytes ausserhalb vom ASCII-Bereich.
also *wo* frage ich mich ja auch .....ich weiss im moment nur, dass es entweder bei der übergabe ans template passiert oder aber halt später im template selbst.
ich weiss nicht genau was du mit "mischen" von zeichenketten meinst.
Mit mischen meine ich, es werden wahrscheinlich irgendwo Zeichenkette mit Bytewerten ausserhalb vom ASCII-Wertebereich mit Unicode-Zeichenketten verbunden. Dann wird nämlich versucht die Zeichenkette in Unicode umzuwandeln. Das geht ohne explizite Angabe der Kodierung aber nur bei ASCII:
In [555]: 'hallo' + u'xyz'
Out[555]: u'halloxyz'
In [556]: 'hällö' + u'xyz'
---------------------------------------------------------------------------
<type 'exceptions.UnicodeDecodeError'> Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
<type 'exceptions.UnicodeDecodeError'>: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
Wenn das beim Template passiert, enthält das vielleicht Bytes ausserhalb vom ASCII-Wertebereich!? Kann Cheetah mit Unicode umgehen!? Wenn nicht musst Du selbst vorher alle Unicode-Zeichenketten entsprechen kodieren.
template.test = "Hühü" --> geht, wird richtig angezeigt
template.test = u"Hallo" --> geht nicht.
folgendes geht aber:
test = u"Hello"
test = test.encode("iso-8859-15")
template.title = test
das problem ist jetzt nur noch, dass ich eine liste und nicht einen einzelnen string übergeben will. kann man eine ganze liste umwandeln oder muss ich das machen bevor ich sie fülle ?