PDA

Afficher la version complète : [Réglé] [Réglé] [C++] Qt: Les accents ne fonctionnent pas



myself789
17/07/2008, 12h01
Salut!

Voila, je fais du C++ depuis quelques mois, et je suis nouvellement sous OpenSuse 11.0. J'ai réussi tant bien que mal à comprendre comment compiler mes applications, mais un problème persiste: Les applications gérées avec la librairie Qt 4.4 affichent mal les accents.

Quelqu'un saurait-il m'aider?

Merci beaucoup!

Heero_Yuy
17/07/2008, 12h05
Qu'entends-tu par "affichent mal les accents."

Pourrais-tu nous montrer un résultat ?


Autre question, ne serait-ce pas plutôt un problème d'encodage ? Es-tu en UTF8 ou en Latin15 ? Le plus universel étant l'UTF8 :)

myself789
17/07/2008, 12h13
De ce côté, j'y comprend absolument rien .. Déja, j'ai beaucoup de mal à configurer mon clavier comme je l'aime, je dois me réhabituer à d'autres touches ... Donc savoir l'encodage :S ...

Pour un exemple, eh bien disons les caractères suivants: "Éàèâ?" ... S'affichent comme suit: Ä"carré"ÄĨÄ$à¢?

EDIT: En fouillant un peu dans les configurations, j'ai vu que l'encodage est bel et bien en UTF8

Heero_Yuy
17/07/2008, 12h42
C'est un appli en console ou avec interface graphique ?

Mais au vu de ce que tu me dis, je pencherais pour un souci d'encodage. T'aurais pas le même problème avec des logiciels ?

Pour résoudre ça, je ne sais plus si c'est sous YaST ou dans le centre de configuration de KDE (enfin si t'es sous KDE) - désolé mais j'ai pas ma SUSE sous les yeux.

myself789
17/07/2008, 13h04
Ce sont des applications en GUI, et non je n'éprouve aucun problème avec d'autres logiciels .. Oh et je suis sous Gnome

Arg, et maintenant j'essaie d'ouvrir l'option "Disposition du clavier" dans Yast, et il ne veut même pas s'ouvrir ...

Emmanuel
17/07/2008, 19h18
Normal : Qt4 est conçu pour que ton appli soit conçue en anglais (ou toute autre langue latine sans accents) puis traduite en ce que tu veux avec linguist. Là tes accents passeront nickel, mais il va te falloir un peu d'entrainement pour maitriser la manip.
Bon courage ! Surtout que la librairie Qt4 est (selon moi) vraiment facile à aborder et surpuissante.

salv-ice
17/07/2008, 19h18
Salut !

En fait, l'encodage n'a rien à voir avec la disposition du clavier mais à la façon dont les caractères spéciaux sont codés par le système. Pour faire court, les types d'encodage diffèrent par rapport au nombre de bits utilisés pour coder un caractère et également en fonction de la zone géographique (par exemple, le charset "latin" utilise 32 bits pour encoder un caractère et est localisé pour l'europe de l'ouest).
Le charset le plus universel en ce moment est l'UTF-8 qui encode les caractères sur 64 bits et permet en théorie d'encoder les caractères de toutes les langues, c'est pourquoi il est universel (non localisé) et qu'il est préférable d'utiliser celui-ci. Il faut souligner qu'on est en train d'atteindre le nombre limite de caractères pouvant être codés sur 64 bits (c-a-d 2^64) et que la norme est en passe de devenir l'UTF-16 (128bits) afin de pouvoir coder tous les idéogrammes des langues asiatiques.

Pour résoudre ton problème il faut que tout ton système (y compris ton compilateur et ton EDI) utilise le même charset mais n'ayant jamais fait de C ou de C++ sous linux, je ne saurais pas trop t'aider pour cela...

Bonne chance!

Edit : Grillé de quelques secondes par Manudwarf :P

Emmanuel
17/07/2008, 20h14
Ah c'est ça la synchronisation...
Sauf que ta réponse est éminament plus développée techniquement cher confrère. (fausse humilité ? nooooooooon :))

salv-ice
18/07/2008, 08h56
Ah c'est ça la synchronisation...
Sauf que ta réponse est éminament plus développée techniquement cher confrère. (fausse humilité ? nooooooooon :))[/b]

En pratique, c'est la tienne qui est juste mais un petit peu de théorie ne fait jamais de mal, c'est toujours bien de savoir "pourquoi" en plus de "comment" ;)

myself789
18/07/2008, 11h55
Pourtant quand j'étais sous Windows j'avais aucun problème d'accents avec Qt ... C'est seulement depuis que je suis passée sous Linux.

J'ai changé d'IDE, et aucune différence ... Je vous donne une capture d'écran pour vous montrer à quel point c'est gênant:

http://img295.imageshack.us/img295/2461/capturekc0.png

genome
18/07/2008, 12h36
Salut,

Tu utilises bien des QString pour tes chaines de caractère ? Si oui, essaie de les créer à partir de QString::fromUtf8. Par défaut, il considère les chaines comme étant en ascii pur ; je crois que ça peut se régler en choisissant UTF-8 avec QTextCodec::setCodecForCStrings

myself789
18/07/2008, 12h50
J'ai essayé d'inclure la ligne suivante dans mon main: QTextCodec::setCodecForCStrings(QTextCodec::codecF orName("UTF-8"));

... Aucun changement :S

Emmanuel
18/07/2008, 13h13
http://doc.trolltech.com/4.4/linguist-translators.html
Pour compléter mon précédent post.

myself789
18/07/2008, 13h30
Oui j'ai déja utilisé QtLinguist pour traduire mon application en anglais .. Mais comme je dis, ce que je ne comprend pas c'est que sous Windows, quand je compilait mes programmes Qt, ils fonctionnaient parfaitement, et maintenant les accents s'affichent mal ... Alors ça ne doit pas venir de Qt précisément non?

genome
18/07/2008, 21h28
J'ai essayé d'inclure la ligne suivante dans mon main: QTextCodec::setCodecForCStrings(QTextCodec::codecF orName("UTF-8"));

... Aucun changement :S[/b]

Normalement, cette ligne de code est à utiliser juste après la création de l’instance de QApplication ; est-ce le cas chez toi ?

Sinon, essaie d'utiliser QString::fromUtf8("Téxte avéc càràctères àccentués")

Emmanuel
19/07/2008, 09h20
Tu veux dire qu'après avoir traduit avec Linguist le problème persiste ? Parce que là c'est plus grave...

myself789
19/07/2008, 17h36
Dsl j'avais pas compris que tu me suggérer de traduire mon appli... Eh bien je l'ai fait, en français, avec tous les accents, et devine quoi? Rien n'a changé encore :( Je commence à être pas mal découragée..

Ah ben j'ai rien dit, ça marche! :D Mais est-ce que j'vais être obligée de traduire mes applis chaque fois?

Emmanuel
20/07/2008, 11h25
Bah... personnellement je parle plutôt pas mal anglais, donc je code mes applis en anglais, puis je les traduits...

genome
20/07/2008, 13h42
Si vraiment tu as des problèmes avec utf-8, repasse ton code source en en latin-1 (alias iso-8859-1), ça devrait aller mieux

myself789
22/07/2008, 06h58
Aleluya!!! :) Merci genome!!!