16

私の Qt アプリケーションでは、ソース コード ファイルは UTF-8 としてエンコードされています。次のコードの場合...

QMessageBox::critical(this, "Nepoznata pogreška", "Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?", QMessageBox::Yes, QMessageBox::No);

…そのメッセージボックスを表示すると、「š」という文字が「š」ではなく、何かおかしいと表示されます。これは、Qt がすべての C 文字列を LATIN-1 を使用してエンコードされているかのように変換するためです。これを解決するために、私は使用しています:

QMessageBox::critical(this, QString::fromUtf8("Nepoznata pogreška"), QString::fromUtf8("Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?"), QMessageBox::Yes, QMessageBox::No);

へのすべての呼び出しを取り除く方法はありQString::fromUtf8()ますか?

4

3 に答える 3

29

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"))を使用してみましたか?

于 2012-01-02T21:55:31.373 に答える
0

「Qt5 はすべてのソース ファイルが UTF-8 でエンコードされていると想定している」という「推測」について: Thiago Macieira は、Qt の開発者が下した決定についてここで説明しています。

QT_NO_CAST_FROM_ASCIIドキュメントに従って、仮定を無効にすることができます。

于 2016-05-30T15:10:16.567 に答える