Unicode

Résolu
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 19 sept. 2004 à 21:23
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 20 sept. 2004 à 16:13
Salut à tous,

J'essaie (laborieusement) d'utiliser Unicode dans mes applications...

Voici un extrait de mon code :
#define UNICODE
#define _UNICODE

  LPTSTR lpCmdLine = GetCommandLine();

  TCHAR pom[MAX_PATH];

  INT argc;
  LPTSTR* argv = CommandLineToArgvW(lpCmdLine, &argc);

  wsprintf(pom, TEXT("Argument n°%i: [%s]"), i, argv[i]);


La ligne avec le wsprintf plante avec ce message d'erreur:
main.c:38:1: converting escape sequence to execution character set: Illegal byte sequence

Après tests, cela vient du symbole ° (degré), car si je le remplace par un espace çà compile... Mais comment faire pour intégrer ce symbole malgré tout ?

5 réponses

cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
19 sept. 2004 à 23:02
Remplace ton '°' par '\xB0' (ou '\xF8' si c'est de la console en code francais).

Ca devrait fonctionner.

eRoZion
3
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
19 sept. 2004 à 22:33
Après test avec aardman, çà vient de GCC : le code compile sous VC++

Ouin :'(
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
19 sept. 2004 à 23:12
En effet, çà fonctionne (en mode graphique, pas testé la console mais y'a pas de raison)... M'enfin s'il faut se taper le remplacement à la main, c'est pas génial. Merci !
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
20 sept. 2004 à 10:12
En attendant j'ai pas trouvé mieux. :-/

Autre précision, il se peut que ça veuille pas compiler si tu mets un digit directement derrière, genre '\xB09' pour afficher °9.
Et bien dans ce cas pas de panique, tu peux simplement remplacer '\xB0' par '\260' (tu peux meme le faire tout le temps dans le doute remarque).

eRoZion
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
20 sept. 2004 à 16:13
Ouais, vive l'octal. Mais je suis passé à Visual C++ 2003 (Visual C++ Toolkit 2003 pour compiler et PSDK Windows Server 20003 pour les autres outils et .h/.lib indispensables), qui lui convertit directement les caractères en Unicode comme il se doit (et surtout, çà me permettra de m'assurer de mes sources compilent sur les deux compilateurs majeurs lol)...

A noter que la prochaine version de MinGW corrigera le problème, j'ai fait un bug report et eu la réponse dans la nuit : https://sourceforge.net/tracker/index.php?func=detail&aid=1030849&group_id=2435&atid=102435
0
Rejoignez-nous