Salut,
Par ANSI, j'imagine que tu parles de
Windows-1252 (Windows européen) et par OEM, j'imagine que tu parles de la
page 850 (DOS européen).
Dans le cas général, il n'y a pas de solution à ton problème.
Mais tu peux quand même essayé de deviner.
Déjà, ces deux jeux de caractères ont beaucoup de glyphes ayant la même valeur (a..z, A..Z, @, %, ...). En fait, la plupart des caractères dans l'interval 0..127 sont communs et sont en fait proche du vrai ASCII. Si une chaîne est uniquement composé de ces caractères commun, tu ne peux pas savoir si c'est du 1252 ou du 850, mais ce n'est pas grave : OemToChar n'aurait aucun effet dessus.
Ensuite, si tu es en France, ce que tu risques d'avoir, c'est des caractères accentués.
Par exemple, si tu trouves 0xE9 dans une chaîne.
1) En 1252, le glyphe est "é".
2) En 850, le glyphe est Ú (U majuscule avec accent aigu).
Il y a peut de chance pour que le caractère U majuscule avec accent aigu soit utilisé en France. Donc si tu trouves 0xE9 dans une chaîne, il y a de bonne chance pour que ce soit du 1252.
Avec le raisonnement inverse, si tu trouves 0x82, le "é" du DOS, il y a de bonne chance que ce soit du OEM.
Tu peux ainsi analyser tous les caractères de la chaîne pour voir si la valeur a plus de chance d'être du 1252 ou du 850.
Et si ou bout de ça, tu as 50 caractères communs, 23 plutot 1252 et 3 plutôt 850, tu peux espérer que la chaîne soit bien une 1252.