用C語言實現URL解密(urldecode)

今天編寫了 一個 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章