url编码原因
浏览器在对输入url进行访问时,如果url包含特殊字符有可能造成截断, 所以在访问(设置setUrl())时需要先转为浏览器可以识别的字符再进行访问.
详细可以参考大佬的文章: 网址URL中特殊字符转义编码 https://blog.youkuaiyun.com/p312011150/article/details/78928003
url特殊字符
用来标志特定的文档位置 # %23
对特殊字符进行编码 % %25
分隔不同的变量值对 & %26
在变量值中表示空格 + %2B
表示目录路径 / %2F
表示目录路径 \ %5C
用来连接键和值 = %3D
表示查询字符串的开始 ? %3F
空格 空格 %20
句号 . %2E
冒号 : %3A
url编码
/*
* use:
* #
* QString encode_text = UrlEncode::urlEncode(text);
*/
#ifndef URLENCODE_H
#define URLENCODE_H
#include <QString>
char dec2hexChar(int n)
{
if (0 <= n && n <= 9) {
return char(short('0') + n);
} else if (10 <= n && n <= 15) {
return char(short('A') + n - 10);
} else {
return char(0);
}
}
class UrlEncode
{
public:
static QString urlEncode(const QString &URL)
{
QString result = "";
for (int i = 0; i < URL.length(); i++) {
char c = URL[i].toLatin1();
if (('0' <= c && c <= '9') || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') ||
c == '/' || c == '.') {
result += c;
} else {
int j = int(c);
if (j < 0) {
j += 256;
}
int i1, i0;
i1 = j / 16;
i0 = j - i1 * 16;
result += '%';
result += dec2hexChar(i1);
result += dec2hexChar(i0);
}
}
return result;
}
};
#endif // URLENCODE_H