OEMToAnsi

OEMToAnsi - C++ - Programmation

Marsh Posté le 27-11-2002 à 11:48:14    

Je reprend le code d'un colleque qu'est parti en vacances et il utilise la fonction OemToAnsi() pour formater des strings qui serviront ensuite en tant que valeur dans une requete SQL UPDATE
 
Je comprenss pas vraiment ce que fait cette methode malgré toute la doc., le pbl c'est que les caracteres spéciaux comme é, à ,è ê ne passe pas et sont transformés en T, F, O.....  
Sans cette methode ca passe nickel, alors j'aimerais bien savoir pkoi il l'utilise...
 
Ai-je été assez clair?
Tkx


Message édité par aurel le 27-11-2002 à 12:10:48
Reply

Marsh Posté le 27-11-2002 à 11:48:14   

Reply

Marsh Posté le 27-11-2002 à 13:13:41    

Ben ça convertit une chaine utilisant le format OEM en chaine ANSI...
Maintenant, pourquoi il l'utilise, ben je sais pas... Je suppose qu'il devait avoir ses raisons, le mieux est de lui demander, non ? [:spamafote]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 27-11-2002 à 14:05:47    

ba c ca le pbl, c'est que je peux pas lui demander puis qu'il est en vacances..
Merci qd meme

Reply

Marsh Posté le 27-11-2002 à 16:20:03    

OEM, c'est bien le "format" des caractères Windows > 127 ? Le è qui est un ? sous DOS, è un ? (alt+0138), etc...

Reply

Marsh Posté le 27-11-2002 à 16:27:28    

ba je sais pas trop le È (ASCII:212) devient un T(ASCII:84 soit 212-128)
et sans cette methode, ca se fait toujours sur 8 octets, donc ca passe.

Reply

Marsh Posté le 27-11-2002 à 17:43:27    

Bon, je suis sérieusement emmerdé
Avec la méthode, les caratères é, ç à ê (et sans doute quelques uns encore) ne passent pas dans la base
Sans la méthode, ces caratères passent, mais ce sont ceux la qui ne passent plus : \ & '"?  
 
Ils doivent avoir la solution sur ce forum!!!
Puisque tous ces caractères passent !! :cry:


Message édité par aurel le 27-11-2002 à 17:46:35
Reply

Marsh Posté le 27-11-2002 à 18:45:05    

Une supposition : Ton collègue s'est rendu compte que certains caractères ne passaient pas en Oem et a donc utilisé la méthode (sans forcemment se rendre compte que ça foutait la merde ailleurs).  
 
Pour faire passer tous les caractères possibles, tu peux utiliser de l'UNICODE (si tu es sous Windows regarde du côté de "MultiByteToWideChar" et "WideCharToMultiByte" ) ou un autre codage à ta convenance (car apparemment ni OEM ni Ansi ne passe).


Message édité par gatorette le 27-11-2002 à 18:47:07

---------------
each day I don't die is cheating
Reply

Marsh Posté le 27-11-2002 à 18:53:22    

La base a été alimentée avec quoi ? Via la fonction OemToAnsi() ?
Si pas homogène, pas facile à retrouver ses petits :(.

Reply

Marsh Posté le 27-11-2002 à 20:50:38    

gatorette a écrit a écrit :

Une supposition : Ton collègue s'est rendu compte que certains caractères ne passaient pas en Oem et a donc utilisé la méthode (sans forcemment se rendre compte que ça foutait la merde ailleurs).  
 
Pour faire passer tous les caractères possibles, tu peux utiliser de l'UNICODE (si tu es sous Windows regarde du côté de "MultiByteToWideChar" et "WideCharToMultiByte" ) ou un autre codage à ta convenance (car apparemment ni OEM ni Ansi ne passe).




+1
Et si la supposition de gatorette est juste, alors tu pourras engueuler ton collègue !
De toute façon, il faut l'engueuler !! Je pense, maintenant que ternet est largement répandu, qu'aucun logiciel ne peut se permettre de ne plus être codé en Unicode !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-11-2002 à 10:49:05    

woo put1, comment je suis pommé avec tout ca !!
Merci qd même, je crois que je vais passer ma journée a lire

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed