Problème d'affichage de caractère

Résolu
R0m41n_w - 13 juil. 2021 à 14:28
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 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 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 11
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 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
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 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 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
Rejoignez-nous