Pasé todo un día tratando de resolver esto sin suerte. Busqué Everywhere pero no tuve suerte con el código de trabajo.Consola de Windows y Qt Texto Unicode
SO: Win XP Sp2 IDE & MARCO: C++, Qt Creator 2.0.
Estoy tratando de dar salida a un texto unicode (UTF-8) a la consola de Windows, pero todo lo que veo es un galimatías en lugar de los caracteres Unicode. Sé que la consola win admite unicode (desde win 2000) ... al menos según Wikipedia y muchos en la red, pero no veo cómo hacer que funcione con Qt. La mayoría de las "soluciones" que he visto (no he visto muchas) usan tecnología C++ y WInAPI ... que no puedo usar porque esa no es la manera Qt. Estoy usando QStrings y Qt!
El código está abajo. Saqué todas las cosas diferentes que traté de mantener el código simple para la publicación. Espero que alguien pueda hacer que el código funcione.
#include <QtCore/QCoreApplication>
#include <QString>
#include <QTextStream>
#include <QDate>
#include <QFile>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QTextStream qin(stdin);
QTextStream qout(stdout);
//The last 2 chars in QString each need a double slash for an accent.
QString szqLine = QString::fromUtf8("abc áéüóöú őű");
//I want this text console output to be in red text color.
qout << "Bellow are some unicode characters: " << endl;
//The Win XP console does not display the unicode chars correctly!!
//The cosole does not display unicode chars even though it is capable
//according to wikipedia. I just don't know how with Qt.
//I want this text output in white(or default font color, not red.)
qout << szqLine << endl;
//Would be nice to get some unicode input from console too.
qout << "Write some unicode chars like above: " << endl;
QString szqInput;
szqInput = QString::fromUtf8(qin.readLine());
qout << "You wrote: " << endl;
qout << szqInput << endl;
return app.exec();
}
Unicode solo funciona si configura una fuente adecuada, generalmente no funciona, ya que se predetermina a una página ANSI. Consulte las preguntas relacionadas para intentos similares: http://stackoverflow.com/questions/2849010/output-unicode-to-console-using-c –
... Al parecer, puede establecer cosas como la codificación de la consola en QT ... intentado lo que pude en ese sentido, pero todos los intentos fallaron. Espero que alguien sepa cómo usar QT/unicode/console. – user440297
Creo que deberás crear una subclase personalizada QIODevice (o QTextStream) utilizando las soluciones que no sean Qt que hayas encontrado. (Tenga en cuenta que es Qt, no QT, que es Apple QuickTime). –