Hallo,
mein Programm holt aus einer Datenbank (win32com, ADO) Recordsets ab und speichert sie. Ich möchte das Ergebnis unter Ausnutzung des neuen Moduls csv abspeichern, aber es kommt eine Fehlermeldung im Zusammenhang mit Umlauten ("not in ascii range" oder so).
Das Problem stellt sich auch bei gewöhnlichen Textdateien.
Wie kann ich diese Unicode strings umwandeln? Wenn ich Unicodestrings mittels print() ausgeben lasse, kann ich sie doch auch normal lesen.
Bei den Codesnippets findet sich etwas zur Umwandlung, aber das "händisch" zu erledigen kommt mir merkwürdig vor.
So ungefähr stelle ich mir das vor:
s = 'hallö'.encode() -> s = u'hall\xfe' (so ungefähr)
s.decode() -> 'hallö' [gibts nicht, aber wie macht mans??]
Win32 strings umwandeln?
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Filippo,
Was kommt dabei raus bei Dir?
Gruß
Dookie
Code: Alles auswählen
import sys
encoding = sys.getfilesystemencoding()
a = u"Hallö"
a = a.encode(encoding)
print encoding, repr(a)
a = a.encode("utf-8")
print "utf-8", repr(a)
a = a.encode("latin-1")
print "latin-1", repr(a)
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Bei mir nen Fehler, ich find den lustig... aus Unicode kann er es machen aber zurück zu Unicode geht nicht. :
Code: Alles auswählen
mbcs 'Hall\xf6'
Traceback (most recent call last):
File "C:\Temp\test.py", line 8, in ?
a = a.encode("utf-8")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf6 in position 4: ordinal not in range(128)
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Milan,
ist gar nicht Lutig
hab nur nen saublöden Fehler im Beispiel
so wollte ich es eigentlich haben.
Gruß
Dookie
ist gar nicht Lutig
hab nur nen saublöden Fehler im Beispiel
Code: Alles auswählen
import sys
encoding = sys.getfilesystemencoding()
a = u"Hallö"
print encoding, repr(a.encode(encoding))
print "utf-8", repr(a.encode("utf-8"))
print "latin-1", repr(a.encode("latin-1"))
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]