Qt делает запрос get на YouTube API, не поддерживает символы utf8 - PullRequest
1 голос
/ 19 февраля 2012

Я делаю простой запрос на получение с помощью Qt, но ответ на повторный запрос написан на гибрише, а не на английском.когда я вызываю тот же запрос через браузер, все в порядке, и я получаю правильный ответ, что мне здесь не хватает?вот код и вызов Api YouTube.
API:
https://gdata.youtube.com/feeds/api/videos/cDholGGVc1M?v=2&alt=jsonc (или json)

вот как я вызываю его в Qt

 QUrl getUrl("https://gdata.youtube.com/feeds/api/videos/cDholGGVc1M?v=2&alt=jsonc");
     QNetworkRequest request;
     request.setRawHeader("User-Agent", USER_AGENT.toUtf8());
     request.setRawHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
     request.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
     request.setRawHeader("Accept-Language", "en-us,en;q=0.5");
     request.setRawHeader("Connection", "Keep-Alive");
     request.setUrl(getUrl);
     QEventLoop loop;
     //This tell the request only to cuntinue after all response is done
     QNetworkReply *reply = networkManager->get(request);
     connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
     loop.exec();       
     //return response 
     QByteArray data=reply->readAll();
     ApiResponse.append(data); // HERE IS ALL GIBRISH

1 Ответ

1 голос
/ 19 февраля 2012

Это проблема кодирования. Используйте это, чтобы получить представление Гибрича в UTF-8:

ApiResponse.append(QString::fromUtf8(data));

вместо того, чтобы брать данные прямо в ваш ApiResponse.

...