首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含圆括号的QUrl

包含圆括号的QUrl
EN

Stack Overflow用户
提问于 2012-11-14 02:32:52
回答 1查看 173关注 0票数 0

我们的应用程序是一个32位应用程序。当它安装在64位Windows7中时,通常安装在“C:\Program Files (X86)”,而不是“C:\Program Files”。我们根据安装位置构造一个Url,并将其作为web服务的一部分进行传递。我们像这样构造Url:

代码语言:javascript
复制
ppmPath = "http://" + ipAddress + ":13007/" + folder + ".ppm" + "?filePath="
          + applicationDirPath + "/" + FIRMWARE;
QUrl ppmURL( ppmPath, QUrl::TolerantMode );
ppmPath = QString( ppmURL.toEncoded() );

变量的类型和含义是常见的。

由于Windows764位的“applicationDirPath”包含一个右方括号“)”--在“(X86)”子串中--显然网址已损坏。如果我们将它安装到任何其他位置,即使该位置有任何其他特殊字符,它也可以完美地工作。

如何处理URL中的“)”字符,使之不被破坏?

EN

回答 1

Stack Overflow用户

发布于 2012-11-14 06:35:54

the documentation中,即使在容忍模式下,括号看起来也不像是由QUrl自动编码的。如果您首先在QString中包装您的网址,然后将所有(字符替换为"%28“,并将所有)字符替换为"%29”,那么它的行为应该与您预期的一样。

代码语言:javascript
复制
QString ppmPath = QString("http://" + ipAddress + ":13007/" + folder + ".ppm" + "?filePath="
          + applicationDirPath + "/" + FIRMWARE);
QUrl ppmURL( ppmPath, QUrl::TolerantMode );
ppmPath = QString( ppmURL.toEncoded() );
ppmPath.replace(QChar('('), "%%28");
ppmPath.replace(QChar(')'), "%%29");

我不是百分之百确定需要双倍的百分比,但我记得在过去遇到过麻烦。两种方法都试一试。

或者,您可以尝试使用QUrl::toPercentEncoding()并完全跳过构造函数。它看起来是在转换圆括号。

代码语言:javascript
复制
QUrl ppmURL(QString("http://" + ipAddress + ":13007/" + folder + ".ppm"), QUrl::TolerantMode );
QString filepath = QUrl::toPercentEncoding(applicationDirPath + "/" + FIRMWARE);
ppmUrl.addEncodedQueryItem("filepath", filepath.toLocal8Bit());
ppmPath = QString( ppmURL.toEncoded() );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13366591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档