begin process at 2012 05 28 17:57:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Shell

 > 

detection de caracteres OEM


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

detection de caracteres OEM

mardi 27 avril 2010 à 10:56:11 | detection de caracteres OEM

mcallan

Salut,

J'ai un buffer (char*) qui me contient soit des chaines ANSI soit des chaines OEM

si c'est des OEM, je les transforme en ANSI avec OemToChar

Probleme: comment puis je detecter que ma chaine est deja en ANSI et ne pas la convertir avec OemTochar dans ce cas ?

en bref je cherche a faire deux fonctions

BOOL isAnsi(char *_string) et BOOL isOEM(char *_string)

Des idees pour faire ces fonctions ?

Merci ;)





dimanche 2 mai 2010 à 09:08:57 | Re : detection de caracteres OEM

rt15

Membre Club Administrateur CodeS-SourceS
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.


Cette discussion est classée dans : caracteres, char, detection, ansi, oem


Répondre à ce message

Sujets en rapport avec ce message

Chaine de caracteres aléatoire [ par winwarrior ] Bon voila je voudrai simplement que ce code retourne une chaine de caracteres aléatoire je comprend pas ce qui cloche nlors de la compilation ça me ma Probleme Comparaison deux chaines de caracteres [ par Coxis ] Salut,Bon c pas compliqué j'ai 2 tableaux de caracteres de tailles differentes, je veux les comparer mais ca marche pas...En fait a la base je voulais question à propos du * pour les tableau de caracteres [ par Amanobuo ] Bonjour ! Je m interroge sur l utilisation du * apres le type d une variable j ai compris par quelques tests et de tutos qu'il s agit de l'adresse d' ahhh ! les chaines de caracteres en c++ !!!! [ par Amanobuo ] Bonjoir !  Savez vous quelle est la differance entre char et char* ? ou String et String*char* est un pointeur sur une chaine, mais quelle est sont in ajout de caracteres speciaux [ par jb212121 ] Bonjour,J'aimerai savoir comment rajouter un caractere special ["]dans une variable pour creer un fichier .htmcar ma fassons de faire fait planter le Caracteres accentués [ par sprere16 ] slt,voila mon prob, je voudrai Convertir une chaine de caracteres en une autre non accentués, mais a chaque fois mon code il me donne la meme erreur.v Recherche de caracteres dans une chaine de caracteres [ par rere62960 ] Bonjour, Je veux écrire une fonction qui retourne un pointeur sur la 1ere occurrence du caractère recherché. (NULL si non trouvé) J'ai écris ceci : fonction char -> bool [ par destroy2k4 ] salut a tous je suis debutant en programmation et j'ai un petit problemevoila en fait j'ai besoin d'une fonction C qui prend en parametre un tableau d Afficher les caractères accentués sous Windows en mode console [ par pgl10 ] Bonjour, Pour afficher correctement les caractères accentués sous Windows en mode console il faut utiliser le codage ASCII étendu OEM. Pour faire la sprintf, combien de mémoire à alloué ??? [ par Polack77 ] Bonjour, J'ai un [size=50]petit[/size] problème dans une fonction toute bête (et sa commence à me courir sérieusement). Je veut construire une fonct


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales