Der Kodierungskommentar gibt die Kodierung von der Python-Quelltextdatei an
War schon klar, aber ich habe die ähnlichen Threads zum Thema gelesen und wollte dieser Antwort zuvorkommen.
Wenn ein Bytewert 0xe4 in den Daten für ein "ä" steht, dann ist die Datei offensichtlich nicht UTF-8 kodiert.
Das war das Problem, das ich beschrieb:
Die Dateien liegen komplett in UTF-8 vor bis auf ein einzelnes "kaputtes" Zeichen.
Entweder müssen die Dateien UTF-8 kodiert sein, oder Du musst die Kodierung in der die Datei tatsächlich vorliegen
Weil das so ist, was aus meine Frage doch hervorgegangen sein sollte, fragte ich nach einer Lösung des Problems. Natürlich könnte ich nun, bevor ich mein Python-Skript ausführe, mit einem Shellskript oder einer anderen Programmiersprache den Text vorbearbeiten, so das Python damit klar kommt, aber das ist zum einen umständlich und zum anderen könnte ich dann auch gleich die andere Sprache nehmen. Eleganter wäre es doch, wenn ich den UnicodeDecodeError abfange, das Nicht-UTF-Zeichen ersetze und das Programm weiterlaufen lasse.
Was mir vorschwebt ist sowas
Code: Alles auswählen
p = open(Datei, mode="r", encoding="utf-8") # ;-)
try:
text = p.read()
except UnicodeDecodeError:
if kaputtes_Zeichen = Bytewert 0xe4:
kaputtes_Zeichen = ä # (oder nichts, wenn ich nicht weiß, was das sein soll)
kaputtes_Zeichen.encode('utf-8') # dürfte hier nicht funktionieren