Bonjour
J'utilise allegro5 et dans mon programme j'affiche des mots avec des accents.
et j'ai un problème d'affichage.
la première ligne de code renvoie la chaine "56ème" et c'est ce qui doit être affiché. Ce contenu est chargé à partir d'un fichier qui contient bien les codes ASCII (en hexa) 35 36 E8 6D 65
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 std::string chaine=survolee->getInfo(0); al_draw_text(police1,al_map_rgb(255,255,255),10,40,0,chaine.c_str()); ALLEGRO_USTR* ustr=al_ustr_new(chaine.c_str()); al_draw_ustr(police1,al_map_rgb(255,255,255),10,10,0,ustr); al_draw_text(police1,al_map_rgb(255,255,255),10,70,0,"56ème"); std::string chaine2="56ème"; al_draw_text(police1,al_map_rgb(255,255,255),10,100,0,chaine2.c_str());
La seconde ligne de code n'affiche que 56 comme si la chaine de caractère ne contenait que 56
Pensant qu'il s'agissait d'un problème d'encodage en UTF8 j'ai utilisé le type ALLEGRO_USTR mais le résultat est identique à la seconde ligne de code à savoir 56
Pour tester j'ai mis le texte en dur dans le programme pour l'afficher et ça fonctionne la 5ème ligne de code affiche bien 56ème
Enfin j'ai mis ce texte dans une std::string et l'affichage fonctionne.
J'ai l'impression que pour une raison inconnue un 0 terminal est mis juste avant le è Comme si la chaine était codée 35 36 00 E8 6D 65
Quelqu'un a t'il déjà eu ce problème
Partager