URLEncode:
  用于编码URL字符串,数字和字母保持不变,空格变为'+',其他(如:中文字符)先转换为十六进制表示,然后在每个字节前面加一个标识符%,
例如:“啊”字 Ascii的十六进制是0xB0A1——>%B0%A1

代码实现:

  1. unsigned char CHAR_TO_HEX( unsigned char ch )
  2. {
  3. //0xa(10)转化为字符'A'(65),要加上55 //0x0(0)转化为字符'0'(48),要加上48
  4. return (unsigned char)(ch > ? ch + : ch + );
  5. }
  6.  
  7. std::string URLEncode(const char* pSrc)
  8. {
  9. unsigned char chTemp;
  10. std::string strDest;
  11.  
  12. while (*pSrc)
  13. {
  14. chTemp = (unsigned char)*pSrc;
  15. if ( (chTemp >= 'a' && chTemp <= 'z') || (chTemp >= 'A' && chTemp <= 'Z') || (chTemp >= '' && chTemp <= '')
  16. || strchr("-_.!~*'()", chTemp))
  17. {
  18. strDest += chTemp;
  19. }
  20. else if (chTemp == ' ')
  21. {
  22. *pDest++ = '+';
  23. }
  24. else
  25. {
  26. strDest += '%';
  27. strDest += CHAR_TO_HEX( (unsigned char)(chTemp >> ) );
  28. strDest += CHAR_TO_HEX( (unsigned char)(chTemp & 0x0f) );
  29. }
  30. ++pSrc;
  31. }
  32.  
  33. return strDest;
  34. }

URLDecode:
  用于解码已编码的URL 字符串,解码方式与URLEncode相反

代码实现:

  1. unsigned char* URLDecode(unsigned char* pSrc, std::string &strDest)
  2. {
  3. char szTemp[];
  4.  
  5. while (*pSrc)
  6. {
  7. memset(szTemp, '/0', );
  8. if( *pSrc != '%' && *pSrc != ' ')
  9. {
  10. strDest += *pSrc++;
  11. continue;
  12. }
  13. else if( *pSrc == ' ' )
  14. {
  15. strDest += '+';
  16. continue;
  17. }
  18. //忽略%
  19. ++pSrc;
  20. unsigned char cTmp = ;
  21.  
  22. for (int k = ; k < && *pSrc; ++k, ++pSrc)    //例如:将%3f ---> 0x3f
  23. {
  24. if(*pSrc <= '')//0x30~0x39
  25. {
  26. cTmp |= (*pSrc & 0x0f) << ( - k) * ;
  27. }
  28. else if(*pSrc >= 'a')//0x61~7a
  29. {
  30. cTmp |= (*pSrc - 0x57) << ( - k) * ;
  31. }
  32. else//0x41~5a
  33. {
  34. cTmp |= (*pSrc - 0x37) << ( - k) * ;
  35. }
  36. }
  37. strDest += cTmp;
  38. }
  39. return ;
  40. }

URLEncode与URLDecode总结与实现的更多相关文章

  1. Python 中的urlencode和urldecode

    python中的urlencode与urldecode 发表于2013/11/13 16:04:09  79983人阅读 分类: python 当url地址含有中文,或者参数有中文的时候,这个算是很正 ...

  2. python(24)urlencode和urldecode

    当url地址含有中文,或者参数有中文的时候,这个算是很难正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至‘/’做一下编码转换. 一.urlencode ur ...

  3. python的urlencode与urldecode

    ```python3.x中urlencode在urllib.parse模块中``` 当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的call ...

  4. python中urllib的urlencode与urldecode

    当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换. urlencode urlli ...

  5. Delphi UTF编码 UTF8Encode、UTF8Decode、URLEncode、URLDecode

    一.URL简介    URL是网页的地址,比如 http://www.cnblogs.com.Web 浏览器通过 URL 从 web 服务器请求页面.    由于URL字符串常常会包含非ASCII字符 ...

  6. java中URLEncode和URLDecode

    URLEncode和URLDecode用于完成普通字符串和 application/x-www-from-urlencoded MIME字符串之间的相互转化 如果传递的字符串中包含非西欧字符的字符串, ...

  7. Urlencode and Urldecode 命令行

    由于经常使用,简单记录之 $ alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.ar ...

  8. url 转码 urlencode和 urldecode

    参考网址http://www.t086.com/code/php/function.php-urlencode.php urlencode 将字符串以 URL 编码. 语法: string urlen ...

  9. python中的urlencode与urldecode

    当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换. 所以对于一些中文或者字符,ur ...

随机推荐

  1. mongodb+pycharm使用报错,无法往mongodb存文件

    1 mongodb必须在启用状态下,启用如下 C:/mongodb/bin>mongod --dbpath C:\mongodb\data\db 不能关闭cmd 2 其他问题,貌似在Connec ...

  2. Ceph分层存储分析

    最近弄Ceph集群考虑要不要加入分层存储 因此花了点时间研究了下 1,首先肯定要弄清Ceph分层存储的结构 ,结构图大概就是下图所示 缓存层(A cache tier)为Ceph客户端提供更好的I/O ...

  3. android 区分wifi是5G还是2.4G

    http://bbs.csdn.net/topics/391033966?page=1 我一开始看这帖子,找不到答案,为了后来的人,我来回复吧.WifiManager wifiManager = (W ...

  4. 检查css没被引用上的问题

    1.外部链接是否对的. 2.设置的命名是否一致或同名设置了 3.删除添加的注释看看

  5. 利用ManualResetEvent来来控制异步调用的打印的线程的暂停和恢复(转)

    利用ManualResetEvent来来控制异步调用的打印的线程的暂停和恢复 打印过程可能很长,这时候有可能需要暂停下来做一些事情,然后回来继续接着打印 打印过程中有2个线程:一个是程序运行的主线程, ...

  6. search in rotated sorted array leetcode

    原题链接 题意:给你一个目标值,或者返回其在数组中的下标位置,或者返回-1(表示不存在,查找失败). 例如 0 1 2 4 5 6 7 可能成为 4 5 6 7 0 1 2. 思路分析: 用二分搜索来 ...

  7. Windows 8.1 应用再出发 - 磁贴的更新

    本篇和大家一起了解一下Windows 8.1 中磁贴的更新,我们来看看如何利用它做出更好的应用磁贴. 首先我们从展现形式上来对比一下Windows 8 与 Windows 8.1 中的磁贴: Wind ...

  8. 让谷歌浏览器 chrome 支持小于12px的字体

    webkit的私有属性:{-webkit-text-size-adjust:none;} 但是,在最新版的谷歌里.已经不在支持这个属性啦. 用css3的transform:scale()缩放大小,但是 ...

  9. C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明. ● itoa():将 ...

  10. 笔记:Hyper-V上Centos 6.5分辨率调整问题解决笔记

    最近忙的没有心情写东西,果然博客就这么长草了.今天就稍微写一点点东西吧,反正这问题挺烦的. 背景如下:为准备做redis集群实验,特在笔记本上搭建CentOS6.5的Hyper-V虚拟机. 虚拟机创建 ...