2016-08-06 2 views
0

Meine aktuelle Lösung liest nur alle Bytes einer Datei, versuchen zu dekodieren, wenn irgendeine Ausnahme, ich werde sagen, dass diese Datei nicht richtig codiert ist. Irgendwelche anderen eleganteren Möglichkeiten? Vielen Dank.Python 2.7 überprüfen, ob eine Datei mit UTF-8 codiert ist

utfbytes.decode('utf-8') 

Grüßen, Lin

+2

Mögliches Duplikat von [Python: Gibt es eine Möglichkeit, die Kodierung von Textdateien zu bestimmen?] (Http://stackoverflow.com/questions/436220/python-is-there-a-way-to-determine-the) -encoding-of-text-Datei) –

+0

Danke @DeanFenster, stimme ab. Wenn ich nicht die 3rd-Party-Bibliothek verwende, ist meine aktuelle Lösung, Python 2.7 zu verwenden, bereits gut? –

Antwort

1

No. Von dieser Antwort:

Korrektes Erkennen der Codierung alle Zeiten ist unmöglich.

(Von chardet FAQ :)

Allerdings sind einige Kodierungen für bestimmte Sprachen optimiert und Sprachen sind nicht zufällig. Einige Zeichenfolgen tauchen die ganze Zeit auf, während andere Sequenzen keinen Sinn ergeben. Eine Person, die fließend Englisch spricht, die eine Zeitung öffnet und "txzqJv 2! Dasd0a QqdKjvz" findet, erkennt sofort, dass das nicht Englisch ist (obwohl es nur aus englischen Buchstaben besteht). Wenn man viel "typischen" Text studiert, kann ein Computeralgorithmus diese Art von Geläufigkeit simulieren und eine fundierte Vermutung über die Sprache eines Textes abgeben.

Allerdings gibt es some libraries, die vorhanden ist, dass die besten Anstrengungen unternehmen, um es zu versuchen und den Codierungstyp zu finden.

+0

Danke Nick, wähle ab. Wenn ich nicht die 3rd-Party-Bibliothek verwende, ist meine aktuelle Lösung, Python 2.7 zu verwenden, bereits gut? –

+1

Ihre Lösung sieht perfekt aus, solange Sie Ausnahmen behandeln! –

+0

Sicher, danke Nick. Schönes Wochenende. Stimme ab und markiere deine Antwort als Antwort. –

Verwandte Themen