[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