URLEncode与URLDecode总结与实现
URLEncode:
用于编码URL字符串,数字和字母保持不变,空格变为'+',其他(如:中文字符)先转换为十六进制表示,然后在每个字节前面加一个标识符%,
例如:“啊”字 Ascii的十六进制是0xB0A1——>%B0%A1
代码实现:
unsigned char CHAR_TO_HEX( unsigned char ch )
{
//0xa(10)转化为字符'A'(65),要加上55 //0x0(0)转化为字符'0'(48),要加上48
return (unsigned char)(ch > ? ch + : ch + );
} std::string URLEncode(const char* pSrc)
{
unsigned char chTemp;
std::string strDest; while (*pSrc)
{
chTemp = (unsigned char)*pSrc;
if ( (chTemp >= 'a' && chTemp <= 'z') || (chTemp >= 'A' && chTemp <= 'Z') || (chTemp >= '' && chTemp <= '')
|| strchr("-_.!~*'()", chTemp))
{
strDest += chTemp;
}
else if (chTemp == ' ')
{
*pDest++ = '+';
}
else
{
strDest += '%';
strDest += CHAR_TO_HEX( (unsigned char)(chTemp >> ) );
strDest += CHAR_TO_HEX( (unsigned char)(chTemp & 0x0f) );
}
++pSrc;
} return strDest;
}
URLDecode:
用于解码已编码的URL 字符串,解码方式与URLEncode相反
代码实现:
unsigned char* URLDecode(unsigned char* pSrc, std::string &strDest)
{
char szTemp[]; while (*pSrc)
{
memset(szTemp, '/0', );
if( *pSrc != '%' && *pSrc != ' ')
{
strDest += *pSrc++;
continue;
}
else if( *pSrc == ' ' )
{
strDest += '+';
continue;
}
//忽略%
++pSrc;
unsigned char cTmp = ; for (int k = ; k < && *pSrc; ++k, ++pSrc) //例如:将%3f ---> 0x3f
{
if(*pSrc <= '')//0x30~0x39
{
cTmp |= (*pSrc & 0x0f) << ( - k) * ;
}
else if(*pSrc >= 'a')//0x61~7a
{
cTmp |= (*pSrc - 0x57) << ( - k) * ;
}
else//0x41~5a
{
cTmp |= (*pSrc - 0x37) << ( - k) * ;
}
}
strDest += cTmp;
}
return ;
}
URLEncode与URLDecode总结与实现的更多相关文章
- Python 中的urlencode和urldecode
python中的urlencode与urldecode 发表于2013/11/13 16:04:09 79983人阅读 分类: python 当url地址含有中文,或者参数有中文的时候,这个算是很正 ...
- python(24)urlencode和urldecode
当url地址含有中文,或者参数有中文的时候,这个算是很难正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至‘/’做一下编码转换. 一.urlencode ur ...
- python的urlencode与urldecode
```python3.x中urlencode在urllib.parse模块中``` 当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的call ...
- python中urllib的urlencode与urldecode
当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换. urlencode urlli ...
- Delphi UTF编码 UTF8Encode、UTF8Decode、URLEncode、URLDecode
一.URL简介 URL是网页的地址,比如 http://www.cnblogs.com.Web 浏览器通过 URL 从 web 服务器请求页面. 由于URL字符串常常会包含非ASCII字符 ...
- java中URLEncode和URLDecode
URLEncode和URLDecode用于完成普通字符串和 application/x-www-from-urlencoded MIME字符串之间的相互转化 如果传递的字符串中包含非西欧字符的字符串, ...
- Urlencode and Urldecode 命令行
由于经常使用,简单记录之 $ alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.ar ...
- url 转码 urlencode和 urldecode
参考网址http://www.t086.com/code/php/function.php-urlencode.php urlencode 将字符串以 URL 编码. 语法: string urlen ...
- python中的urlencode与urldecode
当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换. 所以对于一些中文或者字符,ur ...
随机推荐
- GDB的Breakpoint, Watchpoint和Catchpoint
Breakpoint : 设置断点比较直接,在某处停止 Watchpoint : 观察点,即某个变量/表达式发生变化时,停止.可扩展为变量被读/被写/被读or写时都停止 Catchpoint : 在发 ...
- 20145225《Java程序设计》 第7周学习总结
20145225<Java程序设计> 第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1认识时间与日期 时间的度量:GMT.UT.TAI.UTC.Unix.epoch. 年历 ...
- (2015秋) 作业6:(电梯系统之结对编程 I 总分=2*50 分)
电梯系统 0. 背景 南通大学钟秀校区“主教学楼” 用 2 部电梯(连地下室共9层):每到下课.上课前都特别拥挤,大家希望改进已有的电梯调度算法,满足学生和老师快速乘坐电梯的需要.因此,需要重新设计一 ...
- TYVJ计算几何
今天讲了计算几何,发几道水水的tyvj上的题解... 计算几何好难啊!@Mrs.General....怎么办.... 这几道题都是在省选之前做的,所以前面的Point运算啊,dcmp啊,什么什么的,基 ...
- 内置函数 和 select练习3
19. 查询选修"3-105"课程的成绩高于"109"号同学成绩的所有同学的记录. select * from score where cno='3-105' ...
- 并查集+关系的传递(poj 1182)
题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...
- css3动画属性(transitions:property duration timing transition-delay)
transitions:property duration timing-function; transitionst他有三个参数:1) property:属性设置,例如background,colo ...
- SSH Secure Shell Client的windows客户端样式设置
SSH Secure Shell Client下载:http://pan.baidu.com/s/1dF2lDdf 其他工具(putty-0.67)下载:http://pan.baidu.com/s/ ...
- 配置Hadoop开发环境(Eclipse)
参考博文: http://blog.csdn.net/zythy/article/details/17397153 http://www.tuicool.com/articles/AjUZrq 注意事 ...
- 自己动手做Web框架—MVC+Front Controller
在我前面一篇博文<逃脱Asp.Net MVC框架的枷锁,使用Razor视图引擎>发表之后,很多人关心,脱离了之后怎么办?那么这可以说是它的续篇了. 同时,这也是eLiteWeb开源软件的一 ...