Консольные приложения QT и Win32 - PullRequest
1 голос
/ 02 июня 2009

У меня есть консольное приложение Win32, которое показывает это поведение.

1) Приложение VC 2005 cl для компиляции и компоновки работает нормально. Что я имею в виду, работая нормально, так это то, что символы выше 128 отображаются правильно в соответствии с кодовой страницей 437.

2) Когда я использую QT qmake для создания проекта (QT + = console) и SOURCES = main.c, сборка идет нормально и создается мой main.exe. Но символы выше 128 с использованием функции WriteConsoleOuput отображаются по-разному (некоторые странные символы). У меня такое чувство, что это связано с неправильной настройкой кодовой страницы. Я не вызывал никаких функций QT, не создавал ни QApplication, ни объект QCoreApplication. Когда я создал QApplication Object или QCoreApplication Object, результаты были одинаковыми (не отображаются правильные символы).

Есть ли в любом случае правильное отображение символов выше 128 с помощью консоли Win32 и QT?

Ответы [ 2 ]

0 голосов
/ 02 июня 2009

Я решил проблему с помощью WriteConsoleA функций.

0 голосов
/ 02 июня 2009

Я, конечно, не рекомендовал бы использовать WriteConsoleOuput, если это специфичный для Windows API. Qt предоставляет простой способ записать строки, используя QTextStream:

// setup
QFile f;
f.open(stdout, QIODevice::WriteOnly);
QTextStream qout(&f);

// usage
qout << tr("translate this text"); 

Я бы порекомендовал вам использовать UTF-8 для всего, если это возможно. Тогда вам не нужно беспокоиться о различных кодировках и т. Д. Если по какой-то причине вам необходимо выводить данные в локальной кодировке, рассмотрите QString::fromLocal8bit().

...