我有一个显示此行为的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以上的字符?
答案 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函数解决了这个问题。