Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6250174
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: LINUX

2013-04-28 06:20:26

原文地址:C语言实现URL解码 作者:atomix2

这是URL编码之后的数据。

于是用了如下的代码解决了问题: 

  1. void urldecode(char *p)  
  2. {  
  3. register i=0;  
  4. while(*(p+i))  
  5. {  
  6.    if ((*p=*(p+i)) == '%')  
  7.    {  
  8.     *p=*(p+i+1) >= 'A' ? ((*(p+i+1) & 0XDF) - 'A') + 10 : (*(p+i+1) - '0');  
  9.     *p=(*p) * 16;  
  10.     *p+=*(p+i+2) >= 'A' ? ((*(p+i+2) & 0XDF) - 'A') + 10 : (*(p+i+2) - '0');  
  11.     i+=2;  
  12.    }  
  13.    else if (*(p+i)=='+')  
  14.    {  
  15.     *p=' ';  
  16.    }  
  17.    p++;  
  18. }  
  19. *p='\0';  
  20. }  


URL的编码是这样的其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上 “%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子: “胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”

所以在进行解码时就要将十六进制转换成十进制,由于传入的是以字符串形式所以中间存在着字符转整型的过程


阅读(908) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~