QUrl toPercentEncoding () строчный шестнадцатеричный

У меня есть строка, которая становится частью строки запроса URL и должна быть закодирована в URL.

QString queryStringParam = "J1mOEfg/TC";

Итак, я попытался использовать QUrl :: toPercentEncoding () как это

QString encodedQueryString = QUrl::toPercentEncoding(queryStringParam);

что приводит к "J1mOEfg%2FT" но веб-сервис, который я звоню, ожидает "J1mOEfg%2fT" [обратите внимание на строчную букву ‘f’ в кодировке от ‘/’ до ‘% 20f’] и, следовательно, отклоняет параметр. Это, вероятно, плохо со стороны службы, но я ничего не могу с этим поделать. Как получить шестнадцатеричные символы в нижнем регистре при сохранении регистра в остальной части параметра?

3

Решение

Я не думаю, что вы можете сделать это с помощью стандартных функций, но вы можете легко написать свои собственные. В строках, закодированных в процентах, специальные символы кодируются % символ, за которым следует пара шестнадцатеричных цифр. Зная это, вы можете написать такую ​​функцию:

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;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]