2011-10-05 8 views
12

Sto perdendo la capacità di stampare caratteri unicode subito dopo aver istanziato un oggetto QApplication.Perdendo "unicodezza" quando qDebug() ing dopo aver instanziato QApplication

Dal seguente codice e dopo aver inserito tutte le librerie necessarie:

int main(int argc, char** argv) 
{ 
    qDebug() << "aeiou áéíóú"; 
    QApplication app(argc, argv); 
    qDebug() << "aeiou áéíóú"; 
    return 0; 
} 

sto ottenendo questo output:

aeiou áéíóú 
aeiou áéíóú 

Come posso risolvere questo comportamento strano? Devo essere in grado di stampare stringhe unicode (in arrivo in UTF-8).

+0

@HostileFork Sì, sono tutti in UTF-8, ho imparato a farlo quando Web-Developing, non è divertente pubblicare documenti con codifica UTF-8 con file in latino1 e non sapendolo. lol –

risposta

13

2017 AGGIORNAMENTO: Questa risposta si applica a partire dal 2011 per Qt 4. In Qt 5, i codec di testo sono stati eliminati, e tutte le fonti dovrebbe essere UTF-8. Vedere "Source code must be UTF-8 and QString wants it"

Quando Qt interpreta char * in una stringa, si utilizza un codec di testo. Questo è impostato a livello globale, e si può scegliere ciò che si desidera per il vostro progetto:

https://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings

Si noti che di default di Qt è Latin-1, e può stabilire che di default nella chiamata al costruttore di stack QApplication da qualche parte. Se nel tuo progetto utilizzi UTF-8 a livello globale, puoi provare:

int main(int argc, char** argv) 
{ 
    qDebug() << "aeiou áéíóú"; 

    QApplication app(argc, argv); 
    QTextCodec *codec = QTextCodec::codecForName("UTF-8"); 
    QTextCodec::setCodecForCStrings(codec); 

    qDebug() << "aeiou áéíóú"; 
    return 0; 
} 

E vedere se questo risolve il problema.

+0

Ha risolto il problema, perfetto. –

Problemi correlati