Pruebe el módulo chardet Python, que está disponible en PyPI:
pip install chardet
Luego ejecuta chardetect myfile.txt
.
Chardet se basa en el código de detección utilizado por Mozilla, por lo que debería dar resultados razonables, siempre que el texto de entrada sea lo suficientemente largo para el análisis estadístico. Lea la documentación del proyecto.
Como se menciona en los comentarios, es bastante lento, pero algunas distribuciones también envían la versión original de C++ como @Xavier encontró en https://superuser.com/a/609056. También hay una versión de Java en alguna parte.
Usaría este comando simple:
encoding=$(file -bi myfile.txt)
O si solo desea el conjunto de caracteres real (como utf-8
):
encoding=$(file -b --mime-encoding myfile.txt)
En Linux basado en Debian, el paquete uchardet (Debian/Ubuntu) proporciona una herramienta de línea de comandos. Vea a continuación la descripción del paquete:
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