Nicht-utf8-Datei in einem python3-Skript verarbeiten.

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
rjackmuc
User
Beiträge: 4
Registriert: Montag 24. Januar 2022, 11:02

Hallo.

Standardkodierung in Python 3 für die Skriptdateien ist doch utf8.
Ebenso ist Vorgabe, dass Dateien die in einem Skript eingelesen und bearbeitet
werden sollen, ebenfalls in utf-8 kodiert sind.

Ich habe nun einige Fälle, und diese dürften auch bei anderen Leuten häufiger
vorkommen, dass diese einzulesenden Dateien in latin9 (ISO-8859-9) vorliegen.
Innerhalb des Skriptes sind diese Dateien nun auf Fehler zu prüfen,
beispielsweise Gültigkeit von Mandatsreferenzen oder auch die Schreibweise
ausländischer Namen mit allen Umlaut-, Apostroph- und ähnlichen Fällen.

Würdet Ihr nun vor dem Einlesen die ISO-8859-9 (latin9) in ISO-10646 (utf8)
umwandeln, würdet ihr das mittels decode/encode im Skript machen, oder gibt es
in Python die Möglichkeit mit den originalen ISO-8859-9-Zeichenketten zu
arbeiten? Nach meinem Gefühl ist es am effizientesten die Datei vorher mittels
iconv auf Betriebssystemebene umzuwandeln, weil mir das Ganze dann leichter
wartbar erscheint. Utf8 ist doch so etwas wie eine Obermenge von Latin9,
sodass man die korrigierte Datei wieder in Latin9 rückverwandeln kann,
vorausgesetzt die korrigierten Zeichen haben eine Entsprechung in Latin9.

Wie ist Eure Meinung dazu?

Viele Grüße
rjackmuc
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Deine Annahme, dass Dateien einem bestimmten Encoding gehorchen muessen, ist falsch. Aus diesem Grund sollte man beim verarbeiten von Dateien immer explizit das Encoding angeben. Und damit ist dein Problem dann auch geloest. Was da iconv bringen soll, kann ich nicht erkennen - das nutzt unter der Haube die exakt gleichen Mechanismen wie Python selbst, du hast dir also nur Komplexitaet angehext.
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@rjackmuc: Man sollte *immer* beim öffnen von Textdateien die Kodierung angeben. Denn wenn man das nicht macht wird *nicht* UTF-8 genommen, sondern das was im jeweiligen System wo das läuft, eingestellt ist. Unter den meisten Linux-Systemen ist das UTF-8, aber nicht unter allen, und halt auch nicht unter anderen Systemen, wie Windows.

Das UTF-8 die Standardkodierung für *Python-Quelltexte* ist, spielt dabei überhaupt keine Rolle.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten