[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