Problème d'affichage de caractère

Résolu
R0m41n_w - 13 juil. 2021 à 14:28
ToutEnMasm
Messages postés
590
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 septembre 2021
- 20 juil. 2021 à 15:35
Bonjour,
J'ai comme problème que lorsque je souhaite afficher un "â" dans la console, ça m'affiche un "Ô" une fois le programme lancé. Quelqu'un saurait pourquoi ?
PS : ça me fait la même en utilisant "\x83"

3 réponses

Dalfab
Messages postés
665
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
24 juillet 2022
9
16 juil. 2021 à 11:43
Bonjour,

C'est en effet un problème de page de code. Un
char
est trop petit pour stocker tous les caractères de la planète. Seuls quelques caractères sont garantis universels (en gros les 26 lettres de l'alphabet et des symboles). Comme il n'y a que 256 possibilités, pour les autres ça dépend du contexte ou du pays; c'est ce que l'on appelle les pages de code.
- Ton code source est écrit dans un fichier texte, il utilise une page de code sous-entendue. Par exemple sous Windows c'est souvent la Windows-1252.
- Lors de la compilation, les chaines de caractères sont converties dans la page de code du programme. Par exemple avec visual studio, c'est par défaut la Windows-1252.
- La console utilise une page de code pour "traduire" les octets reçus/émis en caractères affichés. Par exemple encore sous Windows et en Europe c'est la page de code IBM-850.
Si les 2 dernières pages de codes ne sont pas identiques, des tas de caractères seront incorrectement affichés.
On peut prévenir la console d'utiliser la même page de code que le programme, si on est dans le cas des 3 exemples il faudrait ajouter au début du
main()
de ton programme:
    system("chcp 1252");
1
NHenry
Messages postés
14968
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 août 2022
161
14 juil. 2021 à 13:17
Le problème se situe sûrement que ton éditeur de code et ta console n'utilisent pas le même charset/page de code.
0
ToutEnMasm
Messages postés
590
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 septembre 2021
3
20 juil. 2021 à 15:35
Le notepad est de bon secours pour surnager entre les formats et les codepages.
Il possède un menu "enregistrer sous" permettant de choisir parmi les encodages
UTF-8(meme pas unicode ) UTF-16 LE .....
Quand aux codepage,un affichage de caractères ascii est la des plus utile.
Ce serait étonnant de ne pas trouver ca dans les sources.
On n'a pas besoin de l'unicode (16 bits) pour afficher correctement â
0