Установите кодировку 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()?

3 ответов


вы пробовали использовать QTextCodec:: setCodecForCStrings (QTextCodec::codecForName ("UTF-8"))?


относительно "догадки", что" Qt5 предполагает, что все исходные файлы кодируются UTF-8": Тьяго Масиейра объясняет решение, принятое разработчиками Qt здесь.

предположение можно отключить с помощью QT_NO_CAST_FROM_ASCII согласно документации.


setCodecForCStrings() была прекращена. Попробуйте вместо

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

это сработало для меня.