c++ - QUrl toPercentEncoding() 小写十六进制

标签 c++ qt encoding url-encoding qstring

我有一个字符串,它成为 url 的查询字符串部分,必须进行 url 编码。

QString queryStringParam = "J1mOEfg/TC";

所以,我尝试使用 QUrl::toPercentEncoding()像这样

QString encodedQueryString = QUrl::toPercentEncoding(queryStringParam);

结果是 "J1mOEfg%2FT" 但我调用的网络服务需要 "J1mOEfg%2fT" [注意编码中的小写字母 'f' '/' 到 '%20f'],因此拒绝该参数。这在服务方面可能很糟糕,但我对此无能为力。如何在保持其余参数大小写的同时获得小写编码的十六进制字符?

最佳答案

我认为您无法使用标准函数来完成,但您可以轻松编写自己的函数。在百分比编码的字符串中,特殊字符使用后跟一对十六进制数字的 % 符号进行编码。知道这一点后,您可以编写如下函数:

QString lowerPercentEncoding( QString str )
{
    int index = str.indexOf("%");
    while( index != -1 )
    {
        QString tmp = str.mid(index, 3);
        str.replace(index,3,tmp.toLower());
        index = str.indexOf("%", index + 1);
    }
    return str;
}

关于c++ - QUrl toPercentEncoding() 小写十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576545/

相关文章:

c++ - 使用 msvc 将 boost 库链接到 qt

C++:数据对齐和内存的有效使用(在时间和空间上)

c++ - Google Drive API 插入名称未命名的新文件

java - 用于 UTF-8 或 ISO-8859-1 编码 XML 的动态 SAX 解析器

python - 使用 Python3 读取 srt(字幕)文件

python - "utf-8"编码在开发服务器上有效,但在部署时无效

c++ - 如何在 C++ 应用程序中处理指向 Objective-C 对象的指针

带分隔符的C++文件读取

c++ - 包含源中的 Qt undefined reference

linux - 使用命令行从多个 HTML 页面创建动画 gif