comment lire un fichier qui peut être enregistré en ansi ou unicode en python?

Je dois écrire un script qui prennent en charge la lecture d'un fichier qui peut être enregistré en Unicode ou Ansi (à l'aide de MS est le bloc-notes).

Je n'ai pas d'indication du format d'encodage dans le fichier, comment puis-je supporter les deux formats d'encodage? (le genre d'une façon générique de la lecture de fichiers avec out savoir le format avancé).

Qui version de Python que vous utilisez? 2.x et 3.x poignée Unicode différemment.
Pour l'unicode, vous pouvez utiliser un ByteOrderMark (BOM) en UTF-16 fichiers pour montrer qu'il est en fait unicode, et l'ordre dans lequel les octets sont dans. régulière "ansi" (ascii, je suppose?) il est rare de commencer avec un marqueur.
J'utilise Python 2.7
Méfiez-vous que "ANSI" n'est pas un codage de caractères: John Machin réponse est le seul à ce jour avec une définition précise de ce qu'est "ANSI".

OriginalL'auteur YSY | 2011-12-11