Code ascii etendus

Signaler
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006
-
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006
-
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

Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
2
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
Messages postés
207
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
2 novembre 2006

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
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

c'est bien ça , merci
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

minet03 . c'est bien ça , merci

simtiers
"\176" et "\178" j'ai essayé dans tous les sens , ça ne marche pas .
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

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.
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Faut utiliser UNICODE et WriteConsole ou WriteFile pour afficher de tels caractères dans une console, c'est pas supporté par la CRT.
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

je suis debutant , tu dis que c'est pas possible en win32 , malgres l'utilisation de l'unicode?
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Non j'ai dit qu'il fallait utiliser la vraie API et non printf.
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

Je veux bien mais c'est quelle api , as tu un nom ou un debut de nom à me donner.Merci
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Déjà donné plus haut...
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

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. :)
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
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.
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

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.
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
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...
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

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
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Hm apparemment tu utilises MSVC, j'ai testé qu'avec GCC. Je teste avec MSVC et je te donne si je trouve...
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
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...
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

chez toi 0x042F renvoi ß ?

bizzar , Puisque chez il renvoi /.

Pourtant le code hexa n'a rien avoir .
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
zame, essaye ca:
MessageBox(NULL, TEXT("\x042F") TEXT("askolnikov"), NULL, 0);
Messages postés
85
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
20 février 2006

Merci mais j'ai la meme erreur :
error C2022: '1071' : too big for character