Code ascii etendus

cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006 - 9 déc. 2004 à 15:12
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006 - 12 déc. 2004 à 19:36
Bonjour j'ai déja cherché sur le site mais je n'ai rien trouvé malgrés les reponses deja proposees.

Je dois mettre dans un char le caractere CARRE ou similaire mais je ne trouve pas le code.Je sais mette un "u e .." avec accents,

Mais pour les caracteres "speciaux" etendus, je cru lire que certains utilisais les carrés pour les bord en console .

Je pense qu'il faut specifier au compilo le jeu de caractere etendu mais je n'ai pas trouvé.

et la syntaxe utilisée est elle la meme que pour les éè... "\202".. ?
Puisque dans la table de caractere de windows le carré n'a pas de alt+... , mais une valeur unicode.

Je travaille sous win32.

Merci pour toutes aides.

39 réponses

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
9 déc. 2004 à 17:34
Je pense que tu trouveras ce que tu cherches dans les codes hexadécimaux des caractères (je crois qu'ils sont dans MS Word).
après tu rentre dans ton char : char caractere = 0xcode;
enfin je crois

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
9 déc. 2004 à 17:40
Salut,

Je pense que les carrés dont tu parles sont les carrés entre "\176" et "\178"

si tu bosses en WIN32 mode GUI (avec des fenêtres....), ce sont ces codes, en ASCII, avec les reférences sur:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/_pluslang_ascii_character_codes.asp

si tu crées une app console, tu dois mettre les codes ANSI :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vccelng4/html/elgrfANSICharacterCodesChart.asp

voilà, c tout
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
9 déc. 2004 à 17:49
c'est bien ça , merci
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
9 déc. 2004 à 18:23
minet03 . c'est bien ça , merci

simtiers
"\176" et "\178" j'ai essayé dans tous les sens , ça ne marche pas .
0

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

Posez votre question
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 10:05
En fait j'ai repondu trop vite , je pensais que ça marchait , mais non.

Je crois qu'il faut specifier au compilo le jeu de caractere à utilisé, si quelqu'un a déjà testé sous win32 les caratere etendus : ╞╠╢╥╨╫█░■►▬ ... ?

Je vais chercher du coté de msdn.

Merci.
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
10 déc. 2004 à 14:38
Faut utiliser UNICODE et WriteConsole ou WriteFile pour afficher de tels caractères dans une console, c'est pas supporté par la CRT.
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 14:56
je suis debutant , tu dis que c'est pas possible en win32 , malgres l'utilisation de l'unicode?
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
10 déc. 2004 à 15:05
Non j'ai dit qu'il fallait utiliser la vraie API et non printf.
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 15:17
Je veux bien mais c'est quelle api , as tu un nom ou un debut de nom à me donner.Merci
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
10 déc. 2004 à 15:26
Déjà donné plus haut...
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 15:34
Nebula "Faut utiliser UNICODE et WriteConsole ou WriteFile pour afficher de tels caractères dans une console"

Je veux pas t'embeter , mais je veux pas afficher ça dans une console.
Ou j'ai rien compris, tous ça pour un carré plein en plus. :)
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
10 déc. 2004 à 15:44
Bon, je récapitule alors (désolé si je suis pas clair, je suis présentement malade avec fièvre et tout le toutim...)

Donc. Si tu veux utiliser des caractères spéciaux dans une console, deux possibilités : soit tu utilises les caractères ANSI comme dit plus haut avec \XXX ou XXX est le code octal du caractère (compatible printf), soit tu utilises Unicode et une des API WriteConsole ou WriteFile pour écrire sur la console. Si tu retiens l'API, il faudra faire la mise en forme de ton texte dans un buffer avec wsprintf ou FormatMessage, cette dernière fonction pouvant d'ailleurs créer le buffer à ta place, de sorte que tu n'aies pas à le gérer toi même.

Dans le cas printf, tu dépends de la langue locale (mais y'a une API pour la définir, SetConsoleOutputCP) pour l'affichage des caractères. Dans le cas Unicode, tes caractères s'afficheront partout de la même manière, sans que tu n'aies rien à gérer.

Est-ce que je suis plus clair ? Si cela t'intéresse j'ai un ensemble .h/.c prêt à utiliser pour une console Unicode.
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 15:54
Je comprend bien ce que tu veux dire mais cela concerne la console .

Moi je veux par exemple l'afficher dans un MessageBox ou autres dialogues , est ce possible ?

En tous cas merci pour l'explication , j'y vois plus clair.
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
10 déc. 2004 à 16:27
Ah désolé, comme tu parlais de console dans ton premier post, çà m'a embrouillé...

MessageBox(NULL, "\x042F" TEXT("askolnikov"), NULL, 0);

Donne Яaskolnikov à l'affichage. Utilise Charmap.exe pour avoir la liste des symboles disponibles + code hexa du caractère dans la barre d'état.

D'ailleurs çà marche pas dans les console, çà affiche ?askolnikov...
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 16:48
je ne comprend plus rien , je copie exactement ça mais rien il n'en veut pas .

MessageBox(NULL, "\x042F" TEXT("askolnikov"), NULL, 0);

"\x042F" error C2022: '1071' : too big for character
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
10 déc. 2004 à 16:55
Hm apparemment tu utilises MSVC, j'ai testé qu'avec GCC. Je teste avec MSVC et je te donne si je trouve...
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
10 déc. 2004 à 17:13
Bon, il s'obstine à refuser la chaine avec cette erreur :
error C2308: concatenating mismatched wide strings

J'ai trouvé çà pour le forcer à la prendre en compte, mais c'est lourd :
TCHAR szMsg[] = TEXT("%askolnikov");
szMsg[0] = 0x042F;
MessageBox(NULL, szMsg, NULL, 0);
Le % ne servant qu'à réserver de la place pour le Я (deux octets).

Faudrait voir MSDN si y'a moyen de contourner...
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 17:28
chez toi 0x042F renvoi ß ?

bizzar , Puisque chez il renvoi /.

Pourtant le code hexa n'a rien avoir .
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
10 déc. 2004 à 17:30
Salut,
zame, essaye ca:
MessageBox(NULL, TEXT("\x042F") TEXT("askolnikov"), NULL, 0);
0
cs_zame Messages postés 85 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 20 février 2006
10 déc. 2004 à 17:41
Merci mais j'ai la meme erreur :
error C2022: '1071' : too big for character
0
Rejoignez-nous