Que contient-il dans les fichiers? Si c'est un texte simple dans un alphabet latin, presque tous les autres octets les fichiers UTF-16LE seront zéro. En revanche, dans les fichiers Windows-1252, je ne m'attendrais pas à voir de zéros. Par exemple, voici “Hello”
dans les fenêtres-1252:
93 48 65 6C 6C 6F 94
... et en UTF-16LE:
1C 20 48 00 65 00 6C 00 6C 00 6F 00 1D 20
Outre les citations bouclées, chaque personnage cartes à la même valeur, avec l'ajout d'un octet zéro à la fin. En fait, cela est vrai pour tous les caractères du jeu de caractères ISO-8859-1 (Windows-1252 étend ISO-8859-1 pour ajouter des mappages pour plusieurs caractères d'impression - comme des guillemets - pour remplacer les caractères de contrôle dans la plage 0x80..0x9F
).
Si vous savez que tous les fichiers sont soit Windows-1252 ou UTF-16LE, un balayage rapide des zéros devrait être tout ce dont vous avez besoin pour déterminer lequel est. Il y a une bonne raison pour laquelle chardet est si lent et complexe, mais dans ce cas, je pense que vous pouvez vous en sortir rapidement.
chardet n'est pas parfait, mais si des fichiers avec des encodages différents sont mélangés, c'est votre meilleur pari. – nosklo
Chardet fonctionne mais il prend beaucoup trop de temps pour traiter tous les fichiers –