IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

UTF8 TO ISO 6937: WideCharToMultiByte prob


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut UTF8 TO ISO 6937: WideCharToMultiByte prob
    Bonjours a tous.

    Mon problème est le suivant:
    Pour des raisons de compatibilités je dois convertir du text UTF8 en iso 6937-2 "Coded character sets for text communication"

    J'ai donc fait une jolie fonction de conversion en utilisant WideCharToMultiByte (cf. ci après). Et ça marche bien pour tous les identifieurs de page exceptés - évidemment - celle qui m’intéresse c.a.d la 20269 (qui correspond a iso 6937. Pas le 2 mais je n’ai pas trouvé mieux).
    J'ai essayé de changer les options mais rien n'y fait.
    Si quelqu'un a une idée ça serait vraiment génial car la je sèche un peu.
    Merci d'avance

    alain.

    PS: si quelqu'un sait faire ce genre dans un autre langage je suis preneur également
    ---

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    string codageDataUTF8_TO_ISOX(int code, LPCSTR csUTF8)
    {
    	try {
     
    		int lenUTF8 = (int)strlen(csUTF8);
    		wchar_t wc[MAXWIDECHAR];
    		memset(wc,0,MAXWIDECHAR*sizeof(wchar_t));
     
    		//UTF8 -> WIDECHAR
    		int iRet= MultiByteToWideChar(
    			CP_UTF8,         	     // code page
    			MB_ERR_INVALID_CHARS,	//0, // character-type options
    			csUTF8, 		       // string to map
    			lenUTF8,       		       // number of bytes in string
    			wc,  			         // wide-character buffer
    			MAXWIDECHAR-1         // size of buffer
    			);
    		if (!iRet){
    			// display error
    			// ...bla bla..
    			return "";
    		}
     
     
    		// WIDECHAR -> code
    		int lenWC = (int)wcslen(wc);
     
    		char c[MAXISOCHAR];
    		memset(c,0,MAXISOCHAR);
    		//LPCSTR p="\x27";
    		LPCSTR p="'";
    		iRet=WideCharToMultiByte(
    			code,              // code page-
    			0,            	      // performance and mapping flags
    			wc,   	 	     // wide-character string
    			lenWC,            // number of chars in string
    			c,     		     // buffer for new string
    			MAXISOCHAR-1,   // size of buffer
    			p,		     // NULL,     // default for unmappable chars
    			NULL  		   // set when default char used
    			);
     
     
     
    		if (!iRet){
    			// display error
    			// ...bla bla..
    			return "";
    		}
    		return c;
     
    	}
    	// catch 
    	// ....bla bla
    	catch (...) //to be sure 
    	{
    		// ....bla bla
    	}
    }

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    ok j'ai resolu mon problem en partie.
    On peut tester si une page de code est charge dans windows en utilisant la fonction IsValidCodePage()

    Hors moi je l'ai pas :-P

    Par contre je sais pas comment charger la dite de page de code sur mon syteme. Mais ceci n'etant plus une question C++ je vais flager ce forum comme resolu.

    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion UTF8 et utilisation de WideCharToMultiByte()
    Par Frank38 dans le forum Visual C++
    Réponses: 5
    Dernier message: 30/09/2008, 14h25
  2. Encodage UTF8 et ISO-8859-1
    Par Shuny dans le forum Outils
    Réponses: 2
    Dernier message: 19/06/2007, 00h05
  3. [Mail] encodage utf8 et iso
    Par yanice dans le forum Langage
    Réponses: 1
    Dernier message: 23/04/2007, 17h01
  4. Convertir une chaîne utf8 en iso-8859-1
    Par dredre dans le forum ASP
    Réponses: 1
    Dernier message: 05/05/2006, 00h48
  5. Convertir une chaine UTF8 en ISO-8859-1
    Par eods dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/08/2004, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo