您的位置:首页 > 编程语言 > C语言/C++

用C语言实现URL解密(urldecode)

2011-07-13 11:00 134 查看
今天编写了 一个 CGI程序 输入路径名 如 /home/michael/prison.avi
发现 c 语言程序 getenv 接受的数据为 %20%2Fhome%2Fmichael%2Fprison.avi ///// (data=getenv("QUERY_STRING");)
这是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';
}

转自: http://hi.baidu.com/phps/blog/item/342254da12df5bdbb6fd489f.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: