2012-01-02 1 views
16

私のQtアプリケーションで私のソースコードファイルはUTF-8としてエンコードされています。私はそのメッセージボックスを表示するときは、次のコードのために...QtのデフォルトエンコーディングをUTF-8に設定する

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

は...、文字「S」は奇妙な何かのように、「S」と表示されませんでした。これは、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()にすべてのコールを取り除く方法はありますか?

+0

http://stackoverflow.com/questions/29485602/qt-convert-unicode-entites – trante

答えて

28
+0

今、愚かな気分です:DIはそれが存在することを知らなかった;)ありがとう:) – xx77aBs

+1

これはqt5のために行うことができますか? setCodecForCStringsが削除されたようです... – ntzrmtthihu777

+2

私はQtを使用しているものに取り組んでいないので、私は確信できません。私の推測では、Qt5はすべてのソースファイルがUTF-8(Latin-1ではなく)でエンコードされていると仮定して、なぜこれを削除したのかを説明していると思います。これと同様の問題が発生している場合は、お気に入りのプログラマーのテキストエディタ(例:メモ帳++)を使用してUTF-8でエンコードされたソースファイルをすべてチェックするだけです。 –

0

「Qt5はすべてのソースファイルがUTF-8であると仮定している」という推測について:Thiago MacieiraはQtの開発者の決定をhereで説明しています。

QT_NO_CAST_FROM_ASCIIでの前提は、ドキュメントに従って無効にすることができます。

関連する問題