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 :

Sortie standard d'un QProcess


Sujet :

Qt

  1. #1
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut Sortie standard d'un QProcess
    Bonjour, j'exécute une commande (g++) avec QProcess, et j'ai besoin d'afficher sa sortie standard. Je récupère donc ça avec readAllStandardOutput (en fait readAllStandardError mais c'est le même principe). Cette fonction renvoie un QByteArray, et lorsque je l'affiche ou j'essaye de le convertir en QString j'ai des caractères foireux, erreur d'encodage donc.

    J'ai essayé différentes choses, avec des affichages plus ou moins horribles ^^ mais jamais un seul de bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QTextCodec* codec = QTextCodec::codecForLocale();
    QString output = codec->fromUnicode(process.readAllStandardError());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QTextCodec* codec = QTextCodec::codecForName("UTF-8");
    QString output = codec->fromUnicode(process.readAllStandardError());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString output = QString::fromLatin1(process.readAllStandardError().data());
    Je précise que je suis sous ubuntu et que le caractère qui fait tout foirer est : `
    Mon OS est censé être en UTF-8 selon la commande "env", mais je ne suis pas un expert de ce genre de subtilité. Si quelqu'un a une idée de comment régler ça, je lui vouerais un culte pendant une bonne poignée de secondes

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Bon, cette méthode fonctionne et m'affiche le texte correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString errOutput = QString::fromLocal8Bit(process.readAllStandardError())
    Je pensais que ça donnerait le même résultat que mon précédent essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QTextCodec* codec = QTextCodec::codecForLocale();
    QString output = codec->fromUnicode(process.readAllStandardError());
    Sauf que j'avais lu la doc trop vite, et qu'il fallait utiliser QTextCodec::toUnicode et pas fromUnicode. Mea culpa.

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

Discussions similaires

  1. PB sortie standard avec les PTHREAD !!!
    Par djspit dans le forum C++
    Réponses: 15
    Dernier message: 19/11/2004, 01h17
  2. [langage] sortie standard linux
    Par ebaynaud dans le forum Langage
    Réponses: 8
    Dernier message: 14/10/2004, 08h05
  3. rediriger la sortie standard vers un textarea
    Par gromite dans le forum Composants
    Réponses: 9
    Dernier message: 10/05/2004, 11h07
  4. Réponses: 5
    Dernier message: 24/12/2003, 09h49
  5. Réponses: 16
    Dernier message: 18/07/2003, 17h16

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