[Python-de] Zeichensatz einer Textdatei feststellen
"Martin v. Löwis"
martin at v.loewis.de
Fre Mar 18 19:38:11 CET 2005
Albert Hermeling wrote:
> ich überlege gerade ob es möglich ist den verwendeten Zeichensatz einer
> Textdatei automatisch zu ermitteln.
Im allgemeinen nicht. Für eine XML-Datei kann man den Algorithmus in
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/363841
verwenden.
> Der Hintergurnd meiner Überlegung ist, wenn ich Strings aus einer Datei mit
> mir unbekannten Zeichensatz lese und diesen String dann in Unicode umwandeln
> will, brauche ich den verwendeten Zeichensatz. Aber wie ermittele ich den?
> Gibt es dafür eine Python funktion oder muss ich auf externe Programme wie z.
> B. file unter Linux zurückgreifen?
Du musst eine Reihe von Kandidaten-Kodierungen haben (die vielleicht
davon abhängt, in welcher Sprache die Datei ist), und diese Kodierungen
in der richtigen Reihenfolge durchprobieren. "Richtig" ist dabei:
- Kodierungen, die im Fall unsinniger Daten Fehler liefern, sollten
vor Kodierungen ausprobiert werden, die das nicht tun (also: UTF-8
vor ISO-8859-1)
- Kodierungen, die wahrscheinlicher sind, sollten vor Kodierungen
ausprobiert werden, die unwahrscheinlicher sind.
Ansonsten kannst Du auch linguistische Aspekte heranziehen, wie etwa
das statistische Auftreten einzelner Buchstaben oder von
Buchstabengruppen.
Ciao,
Martin