Seite 1 von 1

Verfasst: Freitag 14. Dezember 2007, 08:36
von debian75
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.

Verfasst: Freitag 14. Dezember 2007, 08:53
von BlackJack
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:

Code: Alles auswählen

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.

Verfasst: Freitag 14. Dezember 2007, 18:32
von debian75
ok, hab mal folgenden test gemacht:

Code: Alles auswählen

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 ?

thnx u gruss

Verfasst: Freitag 14. Dezember 2007, 20:02
von gerold
debian75 hat geschrieben:muss ich das machen bevor ich sie fülle ?
Hallo debian75!

Beim Füllen. Oder vor dem Übergeben jeden Listeneintrag in einer Schleife durchlaufen.

mfg
Gerold
:-)