我们的应用程序是 32 位应用程序。当它安装在 Windows 7 64 位时,通常安装在“C:\Program Files (x86)”,而不是“C:\Program Files”。我们正在根据安装位置构建一个 Url,并将其作为 Web 服务的一部分传递。我们正在构建这样的 Url:
ppmPath = "http://" + ipAddress + ":13007/" + folder + ".ppm" + "?filePath="
+ applicationDirPath + "/" + FIRMWARE;
QUrl ppmURL( ppmPath, QUrl::TolerantMode );
ppmPath = QString( ppmURL.toEncoded() );
变量类型和含义是通常的。
由于 Windows 7 64 位的“applicationDirPath”包含一个右括号“)”——在“(x86)”子字符串中——显然 URL 已损坏。如果我们将它安装到任何其他位置,它会完美运行,即使该位置有任何其他特殊字符。
URL中的“)”字符如何处理,这样才不坏呢?