エンコードされた URL を含む QString があります。つまり、ブラウザに挿入する URL です。たとえば、次のようになります。
QString string = "http://domain.tld/index.php?some%20encoded&another%20encoded";
QUrlのように作成すると
QUrl(string);
何をエンコードし、何をエンコードしないかをランダムに決定します。この場合、「?」を残します。「&」はデコードされますが、再びパーセント記号がエンコードされます。したがって、ターゲットの php アプリケーションは、「some encoded」ではなく「some%20encoded」を受け取ります。
これは、URL を自動的に解析して修正しようとする QT の機能のようです。この機能は、次の呼び出しで無効にできます。
QUrl(string, QUrl::StrictMode);
これはqt 5+では完全に機能しますが、qt 4ではコンパイルしても、StrictModeパラメーターを指定しなかった場合と同じ動作をします。自分でエンコードした文字列から URL を作成するにはどうすればよいですか?