Win32 strings umwandeln?

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.
Flippo
User
Beiträge: 1
Registriert: Dienstag 20. Juli 2004, 20:57

Win32 strings umwandeln?

Beitragvon Flippo » Dienstag 20. Juli 2004, 21:06

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??]
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 20. Juli 2004, 22:38

Hi Filippo,

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)


Was kommt dabei raus bei Dir?


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Mittwoch 21. Juli 2004, 06:16

Bei mir nen Fehler, ich find den lustig... aus Unicode kann er es machen aber zurück zu Unicode geht nicht. :lol: :

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)
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 21. Juli 2004, 12:29

Hi Milan,

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"))

so wollte ich es eigentlich haben.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder