[Python-de] korrekte Darstellung der Umlaute

Michael Weber michael.weber at fh-stralsund.de
Do Apr 5 09:43:12 CEST 2012


Guten Morgen werte Mitstreiter,

auch wenn dieses Thema sicherlich bereits zig abertausende Male 
durchgenudelt wurde, seid bitte so freundlich und ignoriert diese 
Nachricht nicht. Ich hab nur nen kleines Verständnisproblem.

Also. Ich les per codecs.open und der Codierung utf8 Daten aus einer 
Datei ein. Funzt auch. Dann liegen die im Unicode vor. Jetzt bin ich 
einfach rangegangen und habe die einzelnen Unicode-Werte aufgedröselt 
und hab sie einer Variable zugewiesen, wobei ich gleichzeitig ein Encode 
mit z.B. utf-8 mache. Funzt auch soweit, siehe nachfolgendem Code:


try:
   d = open(filename, "r")
   d_temp = d.read()
   file_encoding_temp = chardet.detect(d_temp)
   file_encoding = file_encoding_temp['encoding']
   d.close()

   d = codecs.open(filename,"r",file_encoding.lower())
except:
   print text_codes(0, "")

allezeilen = d.readlines()
d.close()

for zeile in allezeilen:

   if "=" in zeile:
   tmp = ()
   tmp = zeile.split("=", 1)
   index = tmp[0].encode("utf-8")
   inhalt = tmp[1].encode("utf-8")
   config[index.strip().lower()] = inhalt.strip()


ABER: jetzt steht in der Zielvariable "inhalt" ein Bytestring in der 
Form "\xc3\xb6t\xc2\xb0\xc3\x84", was die UTF-8-Codierung für "öt°Ä" 
ist. Wenn ich das Zeug per Print ausgebe steht es richtig leserlich da. 
In der Variable steht hingegen halt "\xc3\xb6t\xc2\xb0\xc3\x84".

Und jetzt die Frage: Muss das so?? Oder kann man nicht eher erwarten, 
dass es die "leserliche" Variante direkt in der Variable speichert?

Ich weiß, dass es ziemlich beschissen beschrieben ist. Aber ich hoffe 
auf eine kleine Antwort. Ganz herzlichen Dank schonmal.

Gruß
Michael


Mehr Informationen über die Mailingliste python-de