我正在尝试编写一个从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中,但很明显它在某处弄乱了。
我错过了什么?
答案 0 :(得分:2)
据我简单介绍一下JsonCpp文档,该库提供了UTF-8编码的字符串。 要转换为QStrings,请使用QString :: fromUTF8 for qDebug使用qPrintable
QString :: fromStdString使用QString :: fromAscii,请参阅文档here