一起使用JsonCpp和Qt(Unicode问题)

时间:2010-11-16 05:45:58

标签: json qt unicode jsoncpp

我正在尝试编写一个从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的名称)但是特殊字符输出为完全乱码(“à¤?à¥à¤²à¤¿à¤«à ¤°A¥à¤¡“)。 unicode作为JSON字符串“\ u0915 \ u094d \ u0932 \ u093f \ u0905 \ u0904 \ u094d \ u0921”进入,然后我假设JsonCpp将其转换为实际的unicode字符。我希望QString :: fromStdString在std :: string中使用unicode并将其存储在QString中,但很明显它在某处弄乱了。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

据我简单介绍一下JsonCpp文档,该库提供了UTF-8编码的字符串。 要转换为QStrings,请使用QString :: fromUTF8 for qDebug使用qPrintable

QString :: fromStdString使用QString :: fromAscii,请参阅文档here