Unicode [Résolu]

Signaler
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
-
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
-
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

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

Ca devrait fonctionner.

eRoZion
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Après test avec aardman, çà vient de GCC : le code compile sous VC++

Ouin :'(
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
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 !
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
1
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
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
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