Я провел целый день, пытаясь понять это без везения. Я смотрел Everywhere, но не повезло с рабочим кодом.
ОС: Win XP Sp2 IDE и FRAMEWORK: С++, Qt Creator 2.0.
Я пытаюсь вывести текст unicode (UTF-8) в консоль Windows, но все, что я вижу, это тарабарщина вместо символов unicode. Я знаю, что консоль win поддерживает unicode (начиная с win 2000)... по крайней мере, согласно Wikipedia и многим в сети, но я не вижу, как заставить ее работать с Qt. Большинство "решений", которые я видел (не видели много), используют технологии С++ и WInAPI... которые я не могу использовать, потому что это не способ Qt. Я использую QStrings и Qt!
Код ниже. Я вытащил все те вещи, которые пытался сделать код простым для сообщения. Надеюсь, что кто-то сможет заставить код работать.
#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();
}