No meu sistema de arquivos (Windows 7), tenho alguns arquivos de texto (esses são arquivos de script SQL, se isso importa).
Quando abertos com o Notepad ++ , no menu "Codificação", alguns deles têm uma codificação de "UCS-2 Little Endian" e alguns de "UTF-8 sem BOM".
Qual é a diferença aqui? Todos eles parecem ser scripts perfeitamente válidos. Como eu poderia saber quais codificações o arquivo possui sem o Notepad ++?
encae chardetpara sistemas POSIX.
iconvem particular, é útil para esse fim. Essencialmente, você itera as seqüências de caracteres / texto corrompidos por diferentes codificações para ver qual delas funciona. Você ganha quando os personagens não estão mais corrompidos. Eu adoraria responder aqui, com um exemplo programático. Infelizmente, é uma questão protegida.
chardetou chardetectnão estiver disponível no seu sistema, você poderá instalar o pacote através do seu gerenciador de pacotes (por exemplo apt search chardet- no ubuntu / debian o pacote geralmente é chamado python-chardetou python3-chardet) ou via pip com pip install chardet(ou pip install cchardetpara a versão mais rápida e otimizada para c).