web-dev-qa-db-ja.com

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);
_

...そのメッセージボックスを表示すると、文字「š」は「š」として表示されず、奇妙なものとして表示されます。これは、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()へのすべての呼び出しを取り除く方法はありますか?

16
xx77aBs
29
Samuel Harmer

setCodecForCStrings()は非推奨になりました。代わりに試してください

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

それは私のために働いた。

3

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

ドキュメントによると、この仮定は QT_NO_CAST_FROM_ASCII で無効にできます。

0
Peter Gulutzan