Au moins dans le cas général, il n'y a aucun moyen d'être certain que le codage est utilisé pour un fichier - le meilleur que vous peut faire est une supposition raisonnable basée sur des heuristiques. Vous pouvez éliminer certaines possibilités, mais au mieux, vous rétrécissez les possibilités sans en confirmer aucune. Par exemple, la plupart des variantes ISO 8859 permettent n'importe quelle valeur d'octet (ou modèle de valeurs d'octets), donc presque n'importe quel contenu peut être encodé avec presque n'importe quelle variante ISO 8859 (et j'utilise seulement "presque" par précaution, pas de certitude que vous pourriez éliminer l'une des possibilités).
Vous pouvez, cependant, faire quelques suppositions raisonnables. Par exemple, un fichier qui commence avec les trois caractères d'une nomenclature codée en UTF-8 (EF BB BF), il est probablement sûr de supposer qu'il s'agit vraiment d'UTF-8. De même, si vous voyez des séquences comme: 110xxxxx 10xxxxxx, il est assez juste de deviner que ce que vous voyez est codé avec UTF-8. Vous pouvez éliminer la possibilité que quelque chose soit (correctement) UTF-8 activé si vous voyez une séquence comme 110xxxxx 110xxxxx. (110xxxxx est un octet principal d'une séquence, doit être suivi d'un octet non principal, pas d'un autre octet principal dans l'UTF-8 correctement codé).