1

この動作を示す Win32 コンソール アプリがあります。

1) VC 2005 cl を使用してコンパイルおよびリンクすると、アプリケーションは正常に動作します。正常に動作するとは、コード ページ 437 に従って 128 を超える文字が正しく表示されることを意味します。

2) QT qmake を使用してプロジェクト (QT += コンソール) を構築し、SOURCES = main.c を使用すると、ビルドは正常に行われ、main.exe が作成されます。ただし、128 を超える文字は、WriteConsoleOutput 関数を使用すると表示が異なります (一部の奇妙な文字)。これは、コード ページが正しく設定されていないことに関係していると思います。QT 関数を呼び出していません。QApplication や QCoreApplication オブジェクトも作成していません。QApplication オブジェクトまたは QCoreApplication オブジェクトを作成すると、結果は同じです (正しい文字が表示されません)。

Win32コンソールとQTを使用して128を超える文字を正しく表示する方法はありますか?

4

2 に答える 2

0

WriteConsoleA関数を使用して問題を解決しました。

于 2009-06-02T19:20:39.307 に答える
0

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().

于 2009-06-02T16:31:21.693 に答える