4

Web API から JSON を取得する C++ Qt 4.7 アプリを作成しようとしています。私はいくつかの読書をしましたが、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;
}

このコードを実行すると、テストしている名前 (Unicode を含む名前) が出力されますが、特殊文字は完全に意味不明 ("à¤?à¥à¤²à¤¿à¤«à¤°à ¥à¤¡」)。Unicode は JSON 文字列 "\u0915\u094d\u0932\u093f\u092b\u0930\u094d\u0921" として入力され、JsonCpp がそれを実際の Unicode 文字に変換すると仮定します。QString::fromStdString がユニコードを std::string に取り、それを QString に格納することを望んでいましたが、明らかにどこかが台無しになっています。

私は何が欠けていますか?

4

1 に答える 1

2

JsonCpp のドキュメントをざっと見てわかる限り、このライブラリは文字列を UTF-8 エンコーディングで配信します。QStrings に変換するには、qDebug に QString::fromUTF8 を使用し、qPrintable を使用します。

QString::fromStdString は QString::fromAscii を使用します。こちらのドキュメントを参照してください

于 2010-11-16T11:42:05.400 に答える