Bonjour, je voulais savoir si il était possible dans un printf de mettre des caractères accentués sans qu'il change lors de l'éxecution (sous Windows par exemple avec CODE::BLOCKS) et si oui comment.
Merci d'avance de m'aider !
Bonjour, je voulais savoir si il était possible dans un printf de mettre des caractères accentués sans qu'il change lors de l'éxecution (sous Windows par exemple avec CODE::BLOCKS) et si oui comment.
Merci d'avance de m'aider !
C'est un peu dur à répondre à ça parce-que de tous les corrigés des exercices en ligne je n'ai jamais vu un programme en C accepter les caractères accentués.
Pourtant rien ne l’empêche![]()
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 #include<stdio.h> int main (int argc, char** argv) { unsigned char chinese_char[] = {0x20, 0xE5, 0xA4, 0xA7, 0xE5, 0xAE, 0xB6, 0x2C, 0x20, 0xE8, 0xB0, 0xA2, 0xE8, 0xB0, 0xA2, 0x21, 0x00}; unsigned char russian_char[] = {0xD0, 0xA0, 0xD1, 0x83, 0xD1, 0x81, 0xD1, 0x81, 0xD0, 0xBA, 0xD0, 0xB0, 0xD1, 0x8F, 0x20, 0x41, 0x5A, 0x45, 0x52, 0x54, 0x59, 0x20, 0xD0, 0xBA, 0xD0, 0xBB, 0xD0, 0xB0, 0xD0, 0xB2, 0xD0, 0xB8, 0xD0, 0xB0, 0xD1, 0x82, 0xD1, 0x83, 0xD1, 0x80, 0xD0, 0xB0, 0x00}; printf("%s\n\n%s\n\n", chinese_char, russian_char); printf("Vous avez pass\u00E9 en tout %d param\u00E8tres sur la ligne de commande.\n", argc); return 0; }
Sous Windows, dans la console, il faut utiliser la commande chcp 65001 (change code page) ... mais certains caractères passent quand même pas
Pour manipuler des caractères accentués (et plus généralement tous les glyphes non ASCII 7 bits), il faut que tous les éléments de la chaîne de compilation et d'exécution en soient capable.
Il faut :
- Que le langage sache manipuler ces caractères
C/C++ sait les manipuler avec char (ASCII, ISO-8859, UTF-8) et wchar_t (UTF-16 et UTF-32).- Que le code source puisse les contenir
Il y a plusieurs syntaxes. Par exemple puts("\302\253"); est équivalent à puts("«"); si le code source est encodé en ASCII.- Que le terminal soit capable de les afficher
C'est là que ça bloque sur Windows. En effet le terminal affiche par défaut uniquement les 256 caractères de l'encodage ISO-8859.
Pour que Windows puisse afficher des caractère spéciaux, il faut donc changer l'encodage du terminal comme l'indique foetus, mais aussi utiliser une police d'affichage qui contient les glyphes voulus (sinon on a un � qui le remplace).
Une première à chose à faire est de s'assurer que le code source est sauvegardé en UTF8 par exemple pour prendre en compte les caractères accentués.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
Même si je me bats avec les IDEs (Visual et C++ Builder) pour sauvegarder tous mes fichiers en UTF-8, je ne suis pas trop d'accord
Si tu échappes tous les caractères (comme dans mon bout de code), il te reste que de l'ASCII ... sauf si tu ne commentes pas en anglais
Non rien de spécial: regarde mon code avec des UTF-8 code units
L'UTF-8 c'est juste une succession d'octets: regarde la page wiki
Partager