QT和Win32控制台应用程序

时间:2009-06-02 16:18:44

标签: winapi console qt4

我有一个显示此行为的Win32控制台应用程序。

1)使用VC 2005 cl进行编译和链接,应用程序正常工作。我的工作正常意味着128以上的字符根据代码页437正确显示。

2)当我使用QT qmake构建项目(QT + = console)和SOURCES = main.c时,构建正常并且我的main.exe已创建。但128以上的字符,使用WriteConsoleOuput函数显示不同(一些奇怪的字符)。我知道这与Code Page没有正确设置有关。我没有调用任何QT函数,也没有创建QApplication或QCoreApplication对象。当我创建QApplication Object或QCoreApplication Object时,结果相同(不显示正确的字符)。

无论如何使用Win32控制台和QT正确显示128以上的字符?

2 个答案:

答案 0 :(得分:0)

如果那是Windows特定的API,我当然不会建议使用WriteConsoleOuput。 Qt提供了一种使用QTextStream写出字符串的简便方法:

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

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

我建议你尽可能使用UTF-8。然后您不必担心不同的编码等。如果由于某种原因需要输出本地编码,请考虑QString::fromLocal8bit()

答案 1 :(得分:0)

谢谢,

我通过使用WriteConsoleA函数解决了这个问题。