Forums Neueste Beiträge
 

korrekte Darstellung der Umlaute

05/04/2012 - 09:43 von Michael Weber | Report spam
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
 

Lesen sie die antworten

#1 Michael Ströder
05/04/2012 - 09:54 | Warnen spam
Michael Weber wrote:
ABER: jetzt steht in der Zielvariable "inhalt" ein Bytestring in der Form
"\xc3\xb6t\xc2\xb0\xc3\x84",



Das ist repr(inhalt).

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



Du hast wahrscheinlich Deine Konsole auch auf UTF-8 eingestellt und das ist
gut so.

Im Python-Interpreter:

inhalt="\xc3\xb6t\xc2\xb0\xc3\x84"
print str(inhalt)






öt°Ä
inhalt






'\xc3\xb6t\xc2\xb0\xc3\x84'
print repr(inhalt)






'\xc3\xb6t\xc2\xb0\xc3\x84'

Alles klar?

Ciao, Michael.

Ähnliche fragen