Probieren Sie das chardet-Python-Modul aus, das auf PyPI verfügbar ist:
pip install chardet
Führen Sie dann chardetect myfile.txt
aus .
Chardet basiert auf dem von Mozilla verwendeten Erkennungscode und sollte daher vernünftige Ergebnisse liefern, vorausgesetzt, der Eingabetext ist lang genug für statistische Analysen. Lesen Sie die Projektdokumentation.
Wie in den Kommentaren erwähnt, ist es ziemlich langsam, aber einige Distributionen liefern auch die ursprüngliche C++-Version aus, wie @Xavier in https://superuser.com/a/609056 gefunden hat. Irgendwo gibt es auch eine Java-Version.
Ich würde diesen einfachen Befehl verwenden:
encoding=$(file -bi myfile.txt)
Oder wenn Sie nur den tatsächlichen Zeichensatz möchten (wie utf-8
):
encoding=$(file -b --mime-encoding myfile.txt)
Unter Debian-basiertem Linux stellt das Paket uchardet (Debian/Ubuntu) ein Befehlszeilentool bereit. Siehe unten die Paketbeschreibung:
universal charset detection library - cli utility
.
uchardet is a C language binding of the original C++ implementation
of the universal charset detection library by Mozilla.
.
uchardet is a encoding detector library, which takes a sequence of
bytes in an unknown character encoding without any additional
information, and attempts to determine the encoding of the text.
.
The original code of universalchardet is available at
http://lxr.mozilla.org/seamonkey/source/extensions/universalchardet
.
Techniques used by universalchardet are described at
http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html