Seite 1 von 1
codierungsproblem utf8
Verfasst: Freitag 27. Juni 2008, 08:08
von Aprilia
Guten Morgen,
und zwar habe ich folgendes Problem:
ich nutze xmlrpclib, wenn ich vom client eine frage an den server stelle, bekomme ich eine liste die unicode codiert ist.
doch konfiguriert ist am client und am server uft8
im server ist die liste noch utf8.
und am client ist sie dann unicode codiert...
--> WARUM ?
hoffe es kann mir jemand helfen
danke schonmal
Verfasst: Freitag 27. Juni 2008, 08:18
von Pekh
Vermutlich, weil sich das Modul an die empfohlene Arbeitsweise hält und Eingaben decodiert. Du solltest dich dem anschließen und intern mit Unicode weiterarbeiten und erst die wirklichen Ausgaben in die Zielcodierung bringen. Erleichtert dann auch eine eventuelle Verteilung auf andere Systeme, die vielleicht nicht mit UTF-8 arbeiten.
Verfasst: Freitag 27. Juni 2008, 08:24
von audax
weil die liebe xmlrpclib das unicode-Umwandeln für die übernimmt.
Deshalb gibt man das Encoding an :]
Verfasst: Freitag 27. Juni 2008, 09:01
von Aprilia
ok danke ...
ich werde jetzt bei allen ausgaben .encode('utf-8') dahinterschreiben...
das müsste funktionieren
@Pekh: eine umrüstung wäre im meinem fall zu umständlich und würde zu viel zeit in anspruch nehmen...trotzdem danke
Verfasst: Freitag 27. Juni 2008, 09:31
von Leonidas
Aprilia hat geschrieben:ich werde jetzt bei allen ausgaben .encode('utf-8') dahinterschreiben...
das müsste funktionieren
Uhm, das ist ja mal eine schlechte Idee. Du machst es genau andersrum als wie es sinnvoll wäre (Hint: in Python 3.0 wird sowas noch schlechter möglich sein - zu Recht).
Verfasst: Freitag 27. Juni 2008, 10:12
von Aprilia
wie ist es sinnvoller???
ich kann das nicht auf unic. umstellen ...
das ist mein problem
Verfasst: Freitag 27. Juni 2008, 10:16
von Pekh
Ist das wirklich ein so großer Aufwand. vor allem im Vergleich zu der Lösung die du oben angegeben hast? Du mußt lediglich an allen Stellen, wo du Daten aus externen Quellen übernimmst, sicherstellen, daß diese entweder schon als unicode vorliegen oder sie explizit decodieren. Und natürlich die Ausgaben codieren. Für die internen Abläufe in deinem Programm sollte sich eigentlich nichts ändern.
Edit: Doch ja, du solltest allen Strings, die in deinem Programmcode herumgeistern ein `u` voranstellen.
Verfasst: Freitag 27. Juni 2008, 10:32
von Aprilia
nagut, ich werde es mal probieren ...
..thx..
Verfasst: Freitag 27. Juni 2008, 11:07
von Leonidas
Pekh hat geschrieben:Edit: Doch ja, du solltest allen Strings, die in deinem Programmcode herumgeistern ein `u` voranstellen.
Ab 2.6 wird es da auch einen __future__-Import geben.