boah, kann EINMAL was funktionieren ? Cheetah Unicode

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.
Antworten
debian75
User
Beiträge: 90
Registriert: Dienstag 27. November 2007, 01:05

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.
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.
debian75
User
Beiträge: 90
Registriert: Dienstag 27. November 2007, 01:05

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten