这是URL编码之后的数据。
于是用了如下的代码解决了问题:
-
void urldecode(char *p)
-
{
-
register i=0;
-
while(*(p+i))
-
{
-
if ((*p=*(p+i)) == '%')
-
{
-
*p=*(p+i+1) >= 'A' ? ((*(p+i+1) & 0XDF) - 'A') + 10 : (*(p+i+1) - '0');
-
*p=(*p) * 16;
-
*p+=*(p+i+2) >= 'A' ? ((*(p+i+2) & 0XDF) - 'A') + 10 : (*(p+i+2) - '0');
-
i+=2;
-
}
-
else if (*(p+i)=='+')
-
{
-
*p=' ';
-
}
-
p++;
-
}
-
*p='\0';
-
}
URL的编码是这样的其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上
“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:
“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”
所以在进行解码时就要将十六进制转换成十进制,由于传入的是以字符串形式所以中间存在着字符转整型的过程
阅读(4704) | 评论(0) | 转发(2) |