То, что я пытаюсь сделать, это сравнить 2 строки QStrings, которые имеют специальные символы (французский)
сначала я получил с сервера, как данные JSON, сохраненные в txtInfo
txtInfo = "Présenter";
Когда у меня такое состояние, это не сработает (не установит состояние.)
if (txtInfo == "Présenter"){
m_appState = 8;
m_appStateString = AppStatesArray[m_appState];
}
else {
m_appState = -1;
m_appStateString = "UNKNOWN";
}
Чего мне не хватает? Что если я хотел бы сравнить не французский, а китайский?
большое спасибо
Начиная с Qt 5 QString operator==
выполняет fromUtf8
преобразование в массив символов по сравнению с ним. Но если ваш исходный файл (.cpp) не использует utf8, вам нужно создать собственную QString.
В зависимости от кодировки вашего исходного файла (.cpp):
QString compared = QString::fromUtf8("Présenter");
if (txtInfo == QString::fromUtf8("Présenter")){
QString compared = QString::fromLocal8Bit("Présenter");
if (txtInfo == QString::fromUtf8("Présenter")){
Для 100% правильности не забудьте нормализовать ваши строки:
txtInfo = txtInfo.normalized(QString::NormalizationForm_D);
QString compared = /* the correct form for you */;
if (txtInfo == compared.normalized(QString::NormalizationForm_D)){
Других решений пока нет …