Seite 1 von 1

Einlesen und Schreiben von Sonderzeichen

Verfasst: Dienstag 19. Juli 2016, 19:51
von de_tom
Hallo,

ich muss aus einer Datei Text einlesen, verarbeiten und in eine neue Datei schreiben. Der Text enthält neben normalen Schriftzeichen auch Sonderzeichen (Unicode) aller Art. Im folgenden Code ist ein solches Sonderzeichen beispielhaft in der Variablen 'text' enthalten:

Code: Alles auswählen

import codecs
text = "Hallo♥"
enc = "utf-8"
f = codecs.open("file.txt", "w", enc)
f.write(text)
f.close()
Die Ausgabe in 'file.txt" sieht leider so aus:

Code: Alles auswählen

Hallo♥
Was muss ich tun, damit das Zeichen 'korrekt' geschrieben wird?

Vielen Dank für Hilfe,
Tom

Re: Einlesen und Schreiben von Sonderzeichen

Verfasst: Dienstag 19. Juli 2016, 20:00
von Sirius3
@de_tom: der Text wird korrekt geschrieben. UTF8 ist ein multi-byte Encoding, das heißt, dass ein Zeichen durch mehrere Bytes dargestellt werden kann. Wie sonst sollte man über eine Million Zeichen mit Bytes, die 256 verschiedene Werte annehmen können, codieren?

Dein Problem ist, dass das Programm, das Du für die Anzeige des Dateiinhalts benutzt, nicht mit utf8-codierten Dateien zurechtkommt.

Re: Einlesen und Schreiben von Sonderzeichen

Verfasst: Dienstag 19. Juli 2016, 20:14
von de_tom
@Sirius3:
Vielen Dank für die sehr schnelle Antwort! Du hast natürlich recht! Dass UTF-8 mehrere Bytes pro Zeichen verwendet (verwenden muss), war mir schon klar. Ich ging fälschlicherweise von einem "Fehler" im Code aus. Ich hätte eigentlich selbst drauf kommen können. In MS Excel (mit dem die geschriebenen Daten teilweise später eingelesen werden sollen) stellt das/die Zeichen korrekt dar. Das hätte ich eigentlich als erstes testen können.
Ist wohl nicht mein Tag...

Vielen Dank und sorry für meinen unnötigen Beitrtag.
Tom