Umlaute "wiederherstellen"

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.
Antworten
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Und genau deshalb gibt man das Encoding beim Schreiben explizit an.
heiliga horsd

cofi hat geschrieben:Manchmal hilft es ja einfach die Dokumentation zu lesen:
http://docs.python.org/py3k/library/functions.html#open hat geschrieben:encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any encoding supported by Python can be used. See the codecs module for the list of supported encodings.
Stimmt, RTFM hätte ich mir denken können - leider fehlt mir bei dem Kodierungszeug noch ein wenig der Überblick in der Doku, aber ich denke das kommt mit der Zeit.

@/me: Danke, wusste ich nicht. Werd ich mir auf jeden Fall merken!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

heiliga horsd hat geschrieben:Stimmt, RTFM hätte ich mir denken können - leider fehlt mir bei dem Kodierungszeug noch ein wenig der Überblick in der Doku, aber ich denke das kommt mit der Zeit.
Eins muss dir auf jeden Fall klar sein. Strings im Speicher sind Unicode-Strings. Unicode ist ein Konzept und nicht die Art und Weise wie ein Zeichen im Speicher aufgebaut ist. Aus diesem Grund kannst du auch keine Daten als Unicode speichern. Du kannst aber ein Encoding wie UTF-8 verwenden um Unicode-Strings zu speichern. In der Datei hast du dann kein Unicode, sondern einen UTF-8-codierten String. Beim Wiedereinlesen bekommst du im Speicher wieder einen Unicode-String. Dazu musst du allerdings beim Einlesen (bzw. beim Öffnen der Datei) angeben, welches Encoding dafür verwendet werden soll. Hast du Daten als UTF-8 gespeichert, dann solltest du sie auch mit UTF-8-Codierung wieder einlesen. Andere Formate wie EBCDIC würden einfach Datenmüll ergeben - wenn es denn überhaupt funktionierte.

Bitte merken
Von Unicode nach woanders hin: encode()
Von woanders nach Unicode: decode()
heiliga horsd

Super Erklärung, Danke!

Ich werd mich mal wenn ich demnächst Zeit finde wohl noch ein bisschen damit befassen - läuft einem ja immer wieder über den Weg...

Problem gelöst,
Gruß Heiliga Horsd
Antworten