fredsor
Messages postés198Date d'inscriptionlundi 24 avril 2006StatutMembreDernière intervention 3 avril 2008 16 juil. 2007 à 08:54
J'ai deux petites fonctions qui fonctionnent tres bien chez moi ( ca va dans la continuité de se qui a été proposé precedemment...) :
// cette fonction permet de convertir une chaîne ANSI en UniCode
// en entrée : chaîne en ANSI
// return la chaîne en UniCode.
unsigned short* ConvertAnsiToUnicode(char* szAnsi)
{
//Trouver la taille finale pour réserver le buffer
int Size = MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, NULL, 0) ;
LPWSTR wUnicode = new WCHAR[Size];
//effectuer la conversion
MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, wUnicode, Size) ;
return wUnicode;
}
// cette fonction permet de convertir une chaîne UniCode en ANSI
// en entrée : la chaîne en UniCode.
// return chaîne en ANSI
char* ConvertUnicodeToAnsi(TCHAR* wUnicode)
{
int bTemp=(sizeof(wUnicode)/sizeof(TCHAR));
int Size = WideCharToMultiByte(CP_ACP, 0, wUnicode, -1, NULL, 0, NULL, &bTemp) ;
LPSTR szAnsi = new char[Size];
WideCharToMultiByte(CP_ACP, 0, wUnicode, -1, szAnsi, Size, NULL, &bTemp) ;
return szAnsi;
}
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 15 juil. 2007 à 22:05
Salut,
Vu la tête de 'stéréo', ton fichier a plutot l'air d'etre codé en UTF-8.
Je pense pas qu'il existe de fonction pour passer direct d'UTF-8 en
multibyte, donc je te suggere de passer par unicode avec
MultiByteToWideChar et WideCharToMultiByte.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ebooserge
Messages postés137Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention16 juillet 20071 15 juil. 2007 à 23:09
merci de ta reponse.
en effet j'ai essayé comme tu as dit, d'abord passé le buffer en wide char, puis le ramener en multibyte; mais ca ne fonctionne pas.
j'ai essayé avec CP_ACP et meme avec UTF8, rien a faire.
donc je suis ouvert a toute autre proposition ;-)
ebooserge
Messages postés137Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention16 juillet 20071 16 juil. 2007 à 10:11
MERCI de vos réponses les gars !!!
j'avoue que la solution de aardman est la plus simple. mon erreur venait du fait que je mettais cp_acp ou cp_utf8 dans les deux conversions, au lieu de mettre cp_utf8 pour le multibyte vers le wide char, et cp_acp pour le retour au multibyte.
merci encore les gars, vous etes trop sympa.
ps: faudrait que je mette vraiment à programmer en unicode. je dois perdre l'habitude de la programmation en multibyte. il ya pas que l'anglais dans le monde