Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

[SDL] Problème avec le titre du programme

Les accents ne sont pas affichés correctement

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  Suivante
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1  2  Suivante
Hors ligne Anonyme # Posté le 10/04/2009 à 12:13:25

Bonjour,

J'ai un petit problème avec mon programme en SDL : dans le titre du programme que j'affiche avec la fonction SDL_WM_SetCaption();, les accents ne sont pas affichés correctement : on m'affiche des points d'interrogation à la place : o_O

Image utilisateur

Voici le code source du programme :

Code : C - main.cpp
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include "pause.h"

int main(int argc, char *argv[])
{
    SDL_Init(SDL_INIT_VIDEO);

    SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
    SDL_WM_SetCaption("Ma première fenêtre en SDL", NULL);

    pause();

    SDL_Quit();

    return EXIT_SUCCESS;
}


Code : C - pause.h
1
2
3
4
5
6
#ifndef DEF_PAUSE
#define DEF_PAUSE

void pause();

#endif


Code : C - pause.cpp
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include "pause.h"

void pause()
{
    int continuer = 1;
    SDL_Event event;

    while (continuer)
    {
        switch (SDL_WaitEvent(&event))
        {
            case SDL_QUIT:
                continuer = 0;
                break;
        }
    }
}


Merci d'avance de votre aide. :)

EDIT : Je suis sous Windows Vista si cela peut vous aider. ;)
Publicité # Posté le 10/04/2009 à 12:13:25

Hors ligne john54 # Posté le 10/04/2009 à 13:02:02

Études : CESI Nancy

Je ne suis pas un expert mais j'ai remarquer ce détail tout au long de ma progression au C, les accent n'était jamais écrit ça donnait toujours des point d'exclamation ou autre chose inattendu

Donc j'en ai conclu que le C ne prenait pas les accents , je pense que tu va devoir t'en passer à moins qu'il y ait une librairie au autre qui permette de les afficher mais je pense que mateo en aurait parler dans ses chapitres

Donc évite les accents ^^
C'est pas une super réponse je sais xD
Hors ligne anonyme # Posté le 10/04/2009 à 13:42:00

Pourtant, dans une capture d'écran de M@teo21, il n'y a aucun problème avec les accents. :euh:
Hors ligne Tados # Posté le 11/04/2009 à 07:59:18
YOU … are The Chosen One …
Avatar

Citation : Sonic the Hedgehog
Pourtant, dans une capture d'écran de M@teo21, il n'y a aucun problème avec les accents. :euh:
Bonne remarque, je n'y avais pas fais attention...


Toutefois, cette question à été posée récemment ici, il en était ressorti que la documentation de la SDL précise que le texte envoyé en paramètre doit être encodé en UTF-8. (ce qui revient au même pour les caractères du code ASCII)


Deux autres petits liens pour mieux comprendre ce dont il s'agit :
http://fr.wikipedia.org/wiki/Utf8
http://hapax.qc.ca/conversion.fr.html
Édité le 11/04/2009 à 08:00:06 par Tados

Image utilisateur[Tutoriel]
Débuguer facilement
avec valgrind

" … the one who will deliver The Message … "





Image utilisateur[En rédaction]
Accélérer l'allocation
dynamique en C







Image utilisateur





Image utilisateur
"C is a sharp tool"
 
Hors ligne anonyme # Posté le 18/04/2009 à 18:27:29

J'ai le même probléme...

Et si j'ai bien compris, d'aprés la doc, le texte envoyé en paramettre doit être codé en UFT-8

Cool, et comment on fait pour encoder nos caractére en UTF-8 ?
Hors ligne Jirachi # Posté le 18/04/2009 à 21:15:49
Rien à dire ^^

up

Jirachi
 
Hors ligne anonyme # Posté le 19/04/2009 à 13:16:46

S'il vous plait répondez a ma question.
Hors ligne Jirachi # Posté le 19/04/2009 à 14:00:49
Rien à dire ^^

up

Jirachi
 
Hors ligne anonyme # Posté le 19/04/2009 à 15:12:26

up
Hors ligne boli # Posté le 19/04/2009 à 17:18:17
Avatar
Validateurs

Salut,
Tu dois changer l'encodage de ton editeur de Texte.
Avec Code::Blocks par exemple: Edit -> File Encoding -> UTF-8
Hors ligne anonyme # Posté le 19/04/2009 à 17:22:44

Merci, mais j'utilise Visual C++
Tu saurais comment faire sur cet IDE
Merci pour ta réponse :)
Connecté Floooder # Posté le 19/04/2009 à 17:26:08

Essaye de chercher dans les menus ou dans le fichier d'aide ;)
Hors ligne boli # Posté le 19/04/2009 à 17:28:59
Avatar
Validateurs

Je n'ai pas windows dsl.
Hors ligne anonyme # Posté le 19/04/2009 à 17:38:06

J'ai bien cherché, et j'ai trouvé :
Propriété du projet -> Proporiété de configuration -> Paramétre par default du projet -> Jeu de caractéreres : Unicode ou Multioctet.

Pas de UFT-8...
Visual C++ c'est compliqué... Ne me dîte pas de changer, car j'ai fait un parcour du combattant pour installer SDL...
Connecté Floooder # Posté le 19/04/2009 à 17:52:48

Multioctet alors ;)
Hors ligne remy.m19 # Posté le 19/04/2009 à 17:54:19
C++ apprentice !
Avatar

Problème résolu ?

Sinon tu peux essayer de remplacer tes caractères par :
ü : \x81
é : \x82
â : \x83
ä : \x84
à : \x85
ç : \x87
ê : \x88
ë : \x89
è : \x8A
ï : \x8B
î : \x8C

Je ne suis pas sous windows (j'ai pas testé donc mais y'a des chances que ça marche)
Édité le 19/04/2009 à 17:55:08 par remy.m19
Hors ligne anonyme # Posté le 19/04/2009 à 17:58:21

@Floooder : J'ai mit multioctet, le résultat est le même.
@remy.m19 : j'ai remplacé les caractéres spéciaux, rien a faire le résultat est toujours le même...

Suis je maudit ?
Hors ligne Dragon_red # Posté le 19/04/2009 à 19:24:34
Avatar

up
Hors ligne anonyme # Posté le 19/04/2009 à 19:57:49

up svp aidez moi :'(
Hors ligne noob4ever # Posté le 19/04/2009 à 20:05:25
divide and conquer
Avatar

Ville : Grenoble
Pays : France métropolitaine

Utilise le caractère d'échappement suivie du numéro unicode :

Code : C
1
SDL_WM_SetCaption("\u00E9");
 
Hors ligne nepser # Posté le 19/04/2009 à 20:14:03
I write code LOL!
Avatar

Études : Epitech Paris

Pour le reste des caractères, regarde les tableaux ici: http://fr.wikipedia.org/wiki/Table_des_caractères_Unicode_(0000-0FFF)

Regardez ma biographie si vous rencontrez l'erreur "undefined reference" ou si vous avez le warning "Unhandled value ..."
 
Hors ligne ZINO # Posté le 19/04/2009 à 20:51:04
Pas de Quoi?c'est quoi ce quoi
Avatar

Ville : Oran
Pays : Algérie
Études : USTO

Bonjour,
Pour affiché les caractère spéciaux en console il faut que tu te base sur l'ASCII par exemple essaye ce code là
Code : C
1
printf("%c",130);

le %c converti le nombre décimal 130 en ASCII "é"
Voici le tableau ASCII
tableau 1
tableau 2
je pense que ça vous aider!
Édité le 19/04/2009 à 20:58:25 par ZINO

Avant de demander sur le forum demander a votre ami Google
Si vous voulez voir mes projets.
 
Hors ligne Nab # Posté le 20/04/2009 à 00:16:56
KISS
Avatar
Flux RSS

Citation : remy.m19
Sinon tu peux essayer de remplacer tes caractères par :
ü : \x81
é : \x82
â : \x83
ä : \x84
à : \x85
ç : \x87
ê : \x88
ë : \x89
è : \x8A
ï : \x8B
î : \x8C
Faux, ce ne sont pas les valeurs UTF-8.
Citation : ZINO
Pour affiché les caractère spéciaux en console il faut que tu te base sur l'ASCII par exemple essaye ce code là […]
L'ASCII vraiment standard s'arrête à 127, ce qu'il y a au delà est une extension plus ou moins standard.

En UTF-8, 'è' est sur deux octets : 0xc3, 0xa8. Donc en échappement dans une chaîne ça donne par exemple "\xc3\xa8" .

è "\xc3\xa8"
é "\xc3\xa9"
ê "\xc3\xaa"
etc.

Ensuite le plus simple reste quand-même d'encoder ses sources en UTF-8, les octets étant tout de suite bons avec simplement le caractère. Reste à savoir comment, je ne peux pas aider pour Visual C++.
Et lisez les liens Wikipédia fournis plus haut : Unicode, UTF-8.

PS :
Si vous faites du C, compilez en C, créez des fichiers .c, etc. C != C++.

Image utilisateur
Projets & contributions : CTPL | SCE | libbnss
Langages : Norme C99 (TC3, PDF 3.61MB) | Vala | Python
Bibliothèques : GTK+, doc GTK+ | doc GLib | doc GObject | doc GDK | doc GDK-Pixbuf | doc GIO
FAQs : FAQ C | FAQ OpenGL / SDL / GTK+
Programmes : GCC | Geany | GNOME | Valgrind | GDB ; mais aussi : Blender | Gimp | Inkscape
OS : Debian GNU/Linux
 
Hors ligne Tados # Posté le 20/04/2009 à 09:16:03
YOU … are The Chosen One …
Avatar

Citation : Sonic the Hedgehog
J'ai un petit problème avec mon programme en SDL : dans le titre du programme que j'affiche avec la fonction SDL_WM_SetCaption();, les accents ne sont pas affichés correctement
Petit rappel, il ne s'agit pas d'écrire dans la console mais d'afficher correctement le "titre" d'une fenêtre avec la SDL.




Citation : Tados
(...), cette question à été posée récemment ici, il en était ressorti que la documentation de la SDL précise que le texte envoyé en paramètre doit être encodé en UTF-8. (ce qui revient au même pour les caractères du code ASCII)


Deux autres petits liens pour mieux comprendre ce dont il s'agit :
http://fr.wikipedia.org/wiki/Utf8
http://hapax.qc.ca/conversion.fr.html




Citation : Nab
En UTF-8, 'è' est sur deux octets : 0xc3, 0xa8. Donc en échappement dans une chaîne ça donne par exemple "\xc3\xa8" .

è "\xc3\xa8"
é "\xc3\xa9"
ê "\xc3\xaa"
etc.

Ensuite le plus simple reste quand-même d'encoder ses sources en UTF-8, les octets étant tout de suite bons avec simplement le caractère. Reste à savoir comment, je ne peux pas aider pour Visual C++.
Édité le 20/04/2009 à 09:21:04 par Tados

Image utilisateur[Tutoriel]
Débuguer facilement
avec valgrind

" … the one who will deliver The Message … "





Image utilisateur[En rédaction]
Accélérer l'allocation
dynamique en C







Image utilisateur





Image utilisateur
"C is a sharp tool"
 
Hors ligne anonyme # Posté le 20/04/2009 à 16:01:08

Merci a toute vos réponses, j'ai retenue :

1/ La librairie SDL est trés limité avec l'utilisation de l'encodage ASCII (et ses dérivés)
2/ La librairie SDL, se base principalement avec l'encodage UFT-8
3/ UFT-8 est sur deux octet, contrairement a ASCII, qui lui est sur un octet
4/ On peut utiliser dans notre code source, les entrées spéciaux UFT-8 : \xc3\xa8,\xc3\xa9...

C'est vraiment sympas, de votre part a tous :)
La prochaine fois j'encoderais mes caractéres dans les codes sources en UFT-8.
J'utilise Visual C++ EXPRESS, et aprés avoir cherché plusieurs heure dans tout les onglets et dérivés de l'IDE, j'en ai conclut que Visual C++ EXPRESS ne permettait pas d'encoder mes caractéres en UFT-8.

Connaissait vous un IDE en français proche de Visual, capable de le faire (libre et gratuit si possible) ?


Je vous remercie encore une fois de plus ;)
Hors ligne boli # Posté le 20/04/2009 à 17:13:57
Avatar
Validateurs

Code::Blocks
Hors ligne Nab # Posté le 20/04/2009 à 17:28:24
KISS
Avatar
Flux RSS

Déjà, on dit bibliothèque en français, pas librairie ;)

Citation : Abdelite
1/ La librairie SDL est trés limité avec l'encodage ASCII (et ses dérivés)
Heu, pas vraiment non. Si la SDL utilise l'UTF-8, ça ne la rend pas limitée avec ASCII puisque les 127 caractères de l'ASCII sont codés exactement pareils en UTF-8. Ensuite oui, si tu considère que les dérivés de l'ASCII sont les encodages sur un octet (<line type="wikipedia" url="ISO 8859">ISO 8859</lien>, etc.), la SDL est limitée avec ces encodages ; mais l'UTF-8 est une sorte de dérivé de l'ASCII puisque il garde explicitement une compatibilité totale avec ce dernier.
Citation : Abdelite
3/ UFT-8 est sur deux octet, contrairement a ASCII, qui lui est sur un octet
Non, l'UTF-8 est codé sur un ou plusieurs octets (de 1 à 4). Si tu veux comprendre le fonctionnement de l'UTF-8, l'article Wikipedia sus-cité de nombreuses fois est très bien fait.
Citation : Abdelite
3/ On peut utiliser dans notre code source, les entrées spéciaux UFT-8 : \xc3\xa8,\xc3\xa9...
Hum, \x... représente simplement un octet ayant la valeur suivant le x en hexadécimal. Ensuite, il s'agit « simplement » d'insérer les octets UTF-8 et ça fonctionne.

Citation : Abdelite
J'utilise Visual C++ EXPRESS, et aprés avoir cherché plusieurs heure dans tout les onglets et dérivés de l'IDE, j'en ai conclut que Visual C++ EXPRESS ne permettait pas d'encoder mes caractéres en UFT-8.
UTF-8 est un encodage Unicode, peut-être qu'une fois que tu as choisi Unicode (de ce que j'ai vu des posts plus haut, il y aurait une option) il te proposera de choisir entre différents encodages Unicodes, comme UTF-8, UTF-16 ou UTF-32.
Mais si ce n'est pas le cas, il y a fort à parier que l'encodage Unicode de Visual soit l'UTF-32 à priori, donc pas ce qu'il faut ici.

Image utilisateur
Projets & contributions : CTPL | SCE | libbnss
Langages : Norme C99 (TC3, PDF 3.61MB) | Vala | Python
Bibliothèques : GTK+, doc GTK+ | doc GLib | doc GObject | doc GDK | doc GDK-Pixbuf | doc GIO
FAQs : FAQ C | FAQ OpenGL / SDL / GTK+
Programmes : GCC | Geany | GNOME | Valgrind | GDB ; mais aussi : Blender | Gimp | Inkscape
OS : Debian GNU/Linux
 
Hors ligne anonyme # Posté le 20/04/2009 à 18:30:12

@boli : J'ai dit en français ^^
@Nab : Merci de m'avoir repris ;) Mais je préfere librairie contrarement a bibliothèque, même si c'est pas la bonne traduction du faux-amis anglais : "libraries"
Hors ligne Jirachi # Posté le 20/04/2009 à 23:29:37
Rien à dire ^^

up

Jirachi
 
Hors ligne Nab # Posté le 20/04/2009 à 23:37:43
KISS
Avatar
Flux RSS

Citation : Jirachi
up
Si tu as une question, poses là. Mais là il semble que le problème de Abdelite soit en partie résolu, et pas ne nouvelles récentes de Sonic the Hedgehog, donc personne n'a de raisons de te répondre, puisque personne ne peut savoir quel est ton problème.
De plus, le dernier message de ce topic date d'il y à moins de 6 heures, y'a pas vraiment besoin d'un up.

Image utilisateur
Projets & contributions : CTPL | SCE | libbnss
Langages : Norme C99 (TC3, PDF 3.61MB) | Vala | Python
Bibliothèques : GTK+, doc GTK+ | doc GLib | doc GObject | doc GDK | doc GDK-Pixbuf | doc GIO
FAQs : FAQ C | FAQ OpenGL / SDL / GTK+
Programmes : GCC | Geany | GNOME | Valgrind | GDB ; mais aussi : Blender | Gimp | Inkscape
OS : Debian GNU/Linux
 

Retour au forum "Langage C" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx