
Hallo Uwe,
Am Dienstag, 18. März 2008 07:57:36 schrieb Uwe Wilske:
Hallo,
seit den Chemnitzer Linuxtagen 2008 schaue ich mir Python genauer an. Jetzt habe ich ähnliche Probleme, wie im Thread "xml mit Umlauten parsen"
Aus der Firebird Datenbank, die mit dem "Characterset ISO8859_1" erstellt wurde, möchte ich strings mit Umlauten auslesen.
def list_Adr(self): dt_Adr = self.con.cursor() dt_Adr.execute("SELECT ID,KURZ FROM KO_ADR ORDER BY KURZ") rows = dt_Adr.fetchall() for row in rows: s = u"" s = "%3i %s" % (row[0], row[1])
das verwandelt 's' nicht magischerweise in einen unicode string. Wenn du weisst, dass deine Datenbank iso-8859-1 kodierte Strings zurueckgibt, kannst du z.B. sowas machen: s = unicode("%3i %s" % (row[0], row[1]), 'iso-8859-1')
oder du schaust mal, ob deine db Anbindung dazu gebracht werden kann, gleich unicode zurueckzugeben.
#dass funktioniert, zeigt aber die Umlaute falsch an print s #das bringt bei Umlauten einen Fehler print s.encode("ISO-8859-1")
199 Geb�udereinigung GmbH Traceback (most recent call last): File "./python/wnfDesktopkalender/wnf_fib.py", line 50, in <module> db.list_Adr() File "./python/wnfDesktopkalender/wnf_fib.py", line 41, in list_Adr print s.encode("ISO-8859-1") UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 14: ordinal not in range(128)
Was mache ich falsch?