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. unreal3对象属性自动从配置文件中加载的机制

    unrealscript中有两个与属性自动配置相关的关键字: config/globalconfig 当把它们应用于属性时,对象在创建后,该属性的初始值会被自动设置为相对应ini文件中的值. 举例来说 ...

  2. HttpUrlConnection访问Servlet进行数据传输

    建立一个URL url = new URL("location"); 建立 httpurlconnection :HttpUrlConnection httpConn = (Htt ...

  3. Jungle Roads

    Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid ...

  4. Zabbix配置文件详解之服务端zabbix_server

    zabbix作为运维邻域不可缺少的一员,它的各种文档可是数不胜数啊,但是关于配置文件的解释与说明就有点少.这里列出zabbix配置文件篇之zabbix_server. Zabbix Server端配置 ...

  5. 数位DP (51nod)

    题目:数字1的数量 思路:首先考察不同位数以内的所有整数出现1的次数,例如四位数以内[0,9999],个十百千位均有可能出现1, 出现1的时候,其它三个位均可以是0~9,所以假设固定一个位为1,另外三 ...

  6. [Leetcode][JAVA] Best Time to Buy and Sell Stock I, II, III

    Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of a gi ...

  7. [Leetcode][JAVA] Valid Palindrome

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  8. Win7 远程 Ubuntu 桌面 mate desktop,并实现中文输入法

    一. 安装mate desktop: $sudo apt-add-repository ppa:ubuntu-mate-dev/ppa $sudo apt-add-repository ppa:ubu ...

  9. c# 后台调前台的js

    ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "", "<script type=\&q ...

  10. javaWeb-mvc之利用c3p0写入数据库出现乱码

    在使用c3p0向数据库中写入中文数据时出现乱码,于是我采用了和properties中配置url一样 url=jdbc:mysql://localhost:3306/student?Unicode=tr ...