Совместное использование JsonCpp и Qt (проблемы с Unicode) - PullRequest
3 голосов
/ 16 ноября 2010

Я пытаюсь написать приложение на C ++ Qt 4.7, которое получает JSON из веб-API. Я немного почитал, и JsonCpp кажется лучшим. Так что я построил это просто найти и добавил его в свой проект просто отлично.

void RetrievingInformationPage::replyFinished(QNetworkReply *reply)
{

    Json::Value root;
    Json::Reader reader;

    bool success = reader.parse(reply->readAll().data(), root);

    // here be issues
    qDebug() << QString::fromStdString(root["data"][30]["name"].toStyledString());

    return;
}

Когда я запускаю этот код, он выводит имя, которое я тестирую (это имя с Юникодом в нем), но специальные символы выводятся как полный бред («à¤? À ¥ लिफ à ¤ ° à ¥ ड "). Юникод представлял собой строку JSON "\ u0915 \ u094d \ u093f \ u092b \ u030d \ u094d \ u0921", затем я предполагаю, что JsonCpp преобразует его в фактические символы Юникода. Я надеялся, что QString :: fromStdString возьмет юникод в std :: string и сохранит его в QString, но явно где-то все портится.

Чего мне не хватает?

1 Ответ

2 голосов
/ 16 ноября 2010

Насколько я могу судить по краткому обзору документации JsonCpp, библиотека доставляет строки в кодировке UTF-8. Для преобразования в QStrings используйте QString :: fromUTF8 для qDebug используйте qPrintable

QString :: fromStdString использует QString :: fromAscii, см. Документацию здесь

...