Content-Type指定为application/x-www-form-urlencoded 的时候
我们提交的数据编码形式是通过&连接 比如key="<hack>"&value="ailx10"
同时<hack>和ailx10会进行URL编码

key=%3Chack%3E&value=ailx10
%3C:< %3E:>
0x3C是<的ASCII码 %3E是>的ASCII码
以是懂了吗?URL编码便是将字符编码成ASCII码或其他
那么URLDecode的意思便是将ASCII码或其他 转化成字符
这里方便理解以ASCII码为例子 记住不仅仅是ASCII码哦
当我们碰着%的时候 意味着转码开始 连续2个16进制数字 比如%3C
URL转码便是将%3C转为char型10进制数据60 记住这里只占1个字节哦
怎么玩呢?代码如下
阐明一下HEX2DEC数据的意义
16进制转10进制的转换表 ASCII码10进制48是字符0 65是字符A 97是字符a
在看看HEX2DEC数组
HEX2DEC[48] = 0HEX2DEC[65] = AHEX2DEC[97] = a
以是现在理解了吧 ~~~
void utils_uri_decode(const unsigned char sSrc,char dst) { const unsigned char pSrc = sSrc; size_t src_len = strlen((const char)sSrc); const unsigned char src_end = pSrc + src_len; const unsigned char src_last_dec = src_end - 2; char pStart = dst; char pEnd = pStart; while (pSrc < src_last_dec) { if (pSrc == '%') { char dec1, dec2, guard = -1; if (guard != (dec1 = HEX2DEC[(pSrc + 1)]) && guard != (dec2 = HEX2DEC[(pSrc + 2)])) { pEnd++ = (dec1 << 4) + dec2; pSrc += 3; continue; } } pEnd++ = pSrc++; } while (pSrc < src_end) { pEnd++ = pSrc++; } return;}
const char HEX2DEC[256] = { / 0 1 2 3 4 5 6 7 8 9 A B C D E F / / 0 / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 1 / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 2 / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 3 / 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 4 / (char)-1, 10, 11, 12, 13, 14, 15, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 5 / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 6 / (char)-1, 10, 11, 12, 13, 14, 15, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 7 / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 8 / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / 9 / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / A / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / B / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / C / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / D / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / E / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, / F / (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1};