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 ...
随机推荐
- hp小机定位网卡位置
rad已经被olrad取代 HPUX下定位网卡位置 一台HP小型机,可能配了多块网卡,在系统中以la ...
- js 页面值变动监听
1.初始化值map对象 var compareMap = {}:// 定义全局变量 function initCompareMap(context){//context 为指定要初始化的区域,即上下文 ...
- 字符串复制strncpy
#include "stdafx.h" #include "iostream" #include "assert.h" using name ...
- Wall--POJ1113(极角排序+求凸包)
http://poj.org/problem?id=1113 题目大意:现在要给n个点,让你修一个围墙把这些点围起来,距离最小是l 分析 :现在就是求凸包的周长然后再加上一个圆的周长 #includ ...
- (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译
Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...
- linux(ubuntu)安装时遇到的问题
window环境下安装linux虚拟机=时,由于在初始系统语言选择了中文,当linux虚拟机安装成功后, 按[Ctrl + alt +f1~f6]任一一键都行,进入到命令行模式,这时你会发现,哎,我的 ...
- 【kd-tree】bzoj1941 [Sdoi2010]Hide and Seek
枚举每个点,计算离他最近的和最远的点. #include<cstdio> #include<cmath> #include<algorithm> using nam ...
- cmd
ExecuteNonQuery 返回影响的行数 ExecuteScalar 返回第一行第一列
- android中 EditTex t的 inputType 属性
//文本类型,多为大写.小写和数字符号 android:inputType="none" android:inputType="text" a ...
- Create My MySQL configuration by Percona
本文地址:http://www.cnblogs.com/yhLinux/p/4013065.html https://tools.percona.com/ Percona是一款在线自动生成MySQL配 ...