龙空技术网

HTTP报文URL解码实现

ailx10 53

前言:

眼前看官们对“urldecode js”大概比较关心,我们都需要知道一些“urldecode js”的相关文章。那么小编在网上汇集了一些有关“urldecode js””的相关文章,希望我们能喜欢,大家一起来了解一下吧!

URL编码的姐妹篇 HTTP报文URL编码实现 .

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] = 0

HEX2DEC[65] = A

HEX2DEC[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};

标签: #urldecode js #url 转码