[Interest] Difference between QUrl::fromEncoded and QUrl::fromPercentEncoding ?

Richard Turner turner at yiran.org
Tue Aug 13 18:35:47 CEST 2013


On 2013/8/14 0:00, Thiago Macieira wrote:
> On terça-feira, 13 de agosto de 2013 18:44:41, Richard Turner wrote:
>>       QUrl  downloadUrl1  =  QUrl::fromEncoded(str.toUtf8());
>>       QUrl  downloadUrl2  =  QUrl::fromPercentEncoding(str.toUtf8());
> Please note QUrl::fromEncoded returns a QUrl. QUrl::fromPercentEncoding
> returns a QString. That's the difference.
>
> Your code above also calls the QUrl constructor taking a QString, which is a
> big no-no in Qt 4 code, but entirely acceptable in Qt 5.
>
> On the other hand, if you have any percent sequences not making UTF-8,
> QUrl::fromPercentEncoding will mangle them.
>
OK. Now the problem is, when I use downloadUrl1(result from fromEncoded) 
to make a QNetworkRequest (HTTP GET), I always detect an error: Protocol 
"" is unknown.
When I switch to use downloadUrl2, all is good.

The code is like:
         ...
         QNetworkRequest req(downloadUrl1);
         QNetworkReply *reply = networkManager->get(req);
         connect(reply, SIGNAL(finished()),
                 this, SLOT(dataPageFetchFinished()));
Then, I always detect "Protocol "" is unknown" error in the 
dataPageFetchFinished() slot function.

Any idea on why this is happening?



More information about the Interest mailing list