2011-10-05 10 views
12

Estoy perdiendo la capacidad de imprimir caracteres unicode inmediatamente después de crear un objeto QApplication.Pierdo "unicodeness" cuando qDebug() ing después de instaurar una QApplication

Desde el siguiente código y haber incluido todas las bibliotecas necesarias:

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

estoy recibiendo esta salida:

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

¿Cómo puedo solucionar este comportamiento extraño? Necesito poder imprimir cadenas de Unicode (viniendo en UTF-8).

+0

@HostileFork Sí, todos ellos están en UTF-8, aprendí a hacer eso cuando estoy en desarrollo web, no es divertido servir documentos codificados en UTF-8 con archivos en latin1 y sin saberlo. lol –

Respuesta

13

2017 ACTUALIZACIÓN: Esta respuesta se aplica a partir de 2011 para Qt 4. En Qt 5, los códecs de texto fueron eliminados, y se espera que todas las fuentes a ser UTF-8. Ver "Source code must be UTF-8 and QString wants it"

Cuando Qt interpreta char * en una cadena, que utiliza un códec de texto. Esto se establece a nivel mundial, y se puede elegir lo que quiere para su proyecto:

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

Tenga en cuenta que por defecto es de Qt Latin-1, y se puede establecer que por defecto en la pila de llamadas del constructor QApplication en alguna parte. Si utiliza globalmente UTF-8 en su proyecto, puede intentar:

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; 
} 

Y vea si eso resuelve su problema.

+0

Solucionó el problema, perfecto. –

Cuestiones relacionadas