Установите кодировку 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"));
это сработало для меня.