> * QTextStream still delivers mojibake in all cases. I assume there’s a bug 
> somewhere in the way we handle things in QTextStream, this needs some 
> debugging.

Ok, ignore this bullet point. It was simply a bug in my test app (QFile is 
using buffered writes, and I was resetting the output CP of the console before 
they got flushed). It works correctly with the code below. So everything seems 
to work correctly with utf8 if I set both the console code pages and the 
manifest file.

Lars

#include <qdebug.h>
#include <Windows.h>
#include <io.h>
#include <qfile.h>

int main(int, char**)
{
    uint cp = GetConsoleOutputCP();
    qDebug() << "COnsole CP" << cp << GetACP();
    SetConsoleOutputCP(CP_UTF8);

    {
        qDebug() << "Hello" << QString::fromUtf8("Ελληνικά");
        printf("Ελληνικά\n");
        QByteArray greek = "Ελληνικά\n";
        fprintf(stdout, greek.constData());
        for (char c : greek)
            fprintf(stdout, "%c", c);
        _write(1, greek.constData(), greek.length());
        for (char c : greek)
            _write(1, &c, 1);

        QFile file;
        file.open(stdout, QFile::WriteOnly);
        file.write(greek);


        qDebug() << "XXX";
        QTextStream ts(stdout);
        ts.setEncoding(QStringConverter::Utf8);
        ts << greek << QString::fromUtf8(greek);
    }

    SetConsoleOutputCP(cp);
    return 0;
}

_______________________________________________
Development mailing list
[email protected]
https://lists.qt-project.org/listinfo/development

Reply via email to