IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Encodage Qt suspicieux


Sujet :

Qt

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 163
    Par défaut Encodage Qt suspicieux
    Bonjour,

    me voilà confronter à un problème quelque peu louche.

    Je voudrais enlever tous les accents d'une QString en faisant des replace sur ma Qstring.
    Voici mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QString toto(trUtf8("Ma première chaine"));
    toto.replace("è", "e");
    Petit hic : le "è" n'est pas remplacé. J'ai ciblé le problème, il semblerait que cela provienne du trUtf8 car quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.replace(trUtf8("é"), "e");
    çà fonctionne.

    Le souci c'est que çà ne me semble tout de même pas super correct ou du moins un peu bourrin.
    Avez vous une solution moins louche ?

    Et si oui, comment puis-je remplacer plusieurs types d'accent en une seule fois en donnant par exemple une liste d'accents à remplacer et une liste de remplacement ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.replace("è", "e");
    Ici il y a effectivement un problème car la fonction appelée est replace(const QString &, const QString &) qui appelle les constructeurs des QString avec des chaines en UTF-8 (puisque c'est le format de ton fichier source) alors qu'ils attendent une chaine en latin-1.

    Plusieurs solutions :
    - indiquer à Qt que les chaines sont en UTF-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.replace(QString::fromUtf8("è"), QString::fromUtf8("e"));
    - ou, pour ne pas le faire à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    - utiliser la version de replace() qui prend des caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.replace(L'è', L'e');
    - utiliser la décomposition Unicode (cela sépare les accents des caractères)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto = toto.normalized(QString::NormalizationForm_KD);
    puis enlever tous les caractères accents
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (toto[i].category() == QChar::Letter_Modifier) toto.remove(i, 1);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 163
    Par défaut
    Ok merci bien, je vais essayer tout çà et je vous tiens au courant du résultat.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 163
    Par défaut
    J'ai mis en place, le QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

    Cela semble fonctionner.

    Merci à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encodage de caracteres: eviter 81, 8D, 8F, 90, 9D ->
    Par Fladnag dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2004, 11h17
  2. Encodage de cd en fichier mp3
    Par clovis dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 08/04/2004, 01h13
  3. [ENCODAGE][JAVA]Afficher correctement des accents
    Par kornelius dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/02/2004, 16h37
  4. Encodages DOS et Windows
    Par Aramis dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2003, 17h55
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo