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

来源:互联网 发布:婚庆公司源码 编辑:程序博客网 时间:2024/06/10 08:35

今天编写了 一个 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