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()
へのすべての呼び出しを取り除く方法はありますか?
setCodecForCStrings()
は非推奨になりました。代わりに試してください
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
それは私のために働いた。
「Qt5はすべてのソースファイルがUTF-8でエンコードされていると想定している」という「推測」について:Thiago Macieiraは、Qtの開発者が下した決定について説明しています ここ 。
ドキュメントによると、この仮定は QT_NO_CAST_FROM_ASCII
で無効にできます。