URL格式编码与解码
char* urlencode(const void* buf, size_t size) {
_assert_(buf && size <= MEMMAXSIZ);
const unsigned char* rp = (const unsigned char*)buf;
char* zbuf = new char[size*+];
char* wp = zbuf;
for (const unsigned char* ep = rp + size; rp < ep; rp++) {
int32_t c = *rp;
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') ||
(c >= '' && c <= '') || (c != '\0' && std::strchr("_-.~", c))) {
*(wp++) = c;
} else {
*(wp++) = '%';
int32_t num = c >> ;
if (num < ) {
*(wp++) = '' + num;
} else {
*(wp++) = 'a' + num - ;
}
num = c & 0x0f;
if (num < ) {
*(wp++) = '' + num;
} else {
*(wp++) = 'a' + num - ;
}
}
}
*wp = '\0';
return zbuf;
}
decode:
char* urldecode(const char* str, size_t* sp) {
_assert_(str && sp);
size_t zsiz = std::strlen(str);
char* zbuf = new char[zsiz+];
char* wp = zbuf;
const char* ep = str + zsiz;
while (str < ep) {
int32_t c = *str;
if (c == '%') {
int32_t num = ;
if (++str >= ep) break;
c = *str;
if (c >= '' && c <= '') {
num = c - '';
} else if (c >= 'a' && c <= 'f') {
num = c - 'a' + ;
} else if (c >= 'A' && c <= 'F') {
num = c - 'A' + ;
}
if (++str >= ep) break;
c = *str;
if (c >= '' && c <= '') {
num = num * 0x10 + c - '';
} else if (c >= 'a' && c <= 'f') {
num = num * 0x10 + c - 'a' + ;
} else if (c >= 'A' && c <= 'F') {
num = num * 0x10 + c - 'A' + ;
}
*(wp++) = num;
str++;
} else if (c == '+') {
*(wp++) = ' ';
str++;
} else if (c <= ' ' || c == 0x7f) {
str++;
} else {
*(wp++) = c;
str++;
}
}
*wp = '\0';
*sp = wp - zbuf;
return zbuf;
}
URL格式编码与解码的更多相关文章
- URL的编码和解码
URL的编码和解码 参考:阮一峰--关于URL编码 1 为什么要URL编码 在因特网上传送URL,只能采用ASCII字符集 也就是说URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和 ...
- url在线编码和解码
在工作中,经常遇到encode之后的url.想查看里面的某个参数的时候,很不直观.今天在网上搜了一下对url在线编码和解码的网站.对我来说,使用起来很方便.而且这个网站里面,不仅仅有对url的编码和解 ...
- java中URL 的编码和解码函数
java中URL 的编码和解码函数java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);在javascri ...
- javascript对url进行编码和解码
这里总结下JavaScript对URL进行编码和解码的三个方法. 为什么要对URL进行编码和解码 只有[0-9[a-Z] $ - _ . + ! * ' ( ) ,]以及某些保留字,才能不经过编码直接 ...
- .NET Core中如何对Url进行编码和解码
我们在.NET Core项目中,可以用WebUtility类对Url进行编码和解码,首先我们要确保项目中引入了nuget包:System.Runtime.Extensions 当然这个nuget包默认 ...
- 在线url网址编码、解码
>>在线url网址编码.解码<<
- JS对url进行编码和解码(三种方式区别)
Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape().虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. escape 和 ...
- URL地址编码和解码
0. 参考 [整理]关于http(GET或POST)请求中的url地址的编码(encode)和解码(decode) python3中的urlopen对于中文url是如何处理的? 中文URL的编码问题 ...
- js 对url进行编码和解码的三种方式
一.escape 和 unescape escape 原理:对除 ASCII字母.数字.标点符号(@ * _ + - . /) 以外的字符进行编码 .编码的字符被替换成了十六进制的转义序列 不编码的字 ...
随机推荐
- 【Tcpcopy】离线回放功能
最近因调试问题,需要一直进行tcpcopy,拿有问题的包进行测试.决定使用tcpcopy对录制脚本进行回放,以下为我操作的具体步骤.主要是三块 1 下载安装具有离线回放功能的tcpcopy 2 使用t ...
- SELinux的故障排除一例
刚刚采用Puppet部署了dokuwiki,不过配置完成后报错: DokuWiki Setup Error The datadir ('pages') at /pages is not found, ...
- class0513(html基础加强2)
使用VS创建网页 新建Web项目(新建→ASP.Net Web应用程序),新建html页面(添加→新建项→Web→HTML页) 查看页面的方式: 切换到“设计”视图,可以在这里查看初步的预览效果,不是 ...
- DP——最优三角形剖分
[动态规划]凸多边形最优三角剖分 枚举三角行,再递归三角形旁边的两个多边形.
- 609B Load Balancing
题意:有n本书分m个类别,现在你要买两本不属于同一类别的书,问有多少种方案. #include<iostream> #include<cstdlib> #include< ...
- Android Studio工程导入另一个工程作为lib
简单视频应用开发时,使用Vitamio作为视频解码库,官方建议直接以工程作为lib方便升级,将该工程导入到项目时不知道该怎么做,参考了下面的博客,这里存档标记一下. 参考:导入一个Android St ...
- Hbase的安装配置
一.上传解压后的Hbase文件. 二.配置: 1..bash_profile文件: export HBASE_HOME=/home/kituser/bigdata/hbase-0.94.6-cdh4. ...
- Spring Data JAP 多个不是必填的查询条件处理
简单的介绍一下使用场景,DAO层用Spring Data实现,dao 只有接口,实现类是容器启动时动态字节码生成,接口里定义方法,方法上@Query 里写JPQL查询语句. 基于以上的限制,如果对一个 ...
- Git客户单for Windows
1.GItHub for Windows 可参考:http://www.ihref.com/read-16514.html
- html5非常火,他究竟与html4有何差别?
HTML5是HTML标准的下一个版本号.越来越多的程序猿開始HTML5来构建站点.假设你同一时候使用HTML4和HTML5的话 ,你会发现用HTML5从头构建.比从HTML4迁移到HTML5要方便非常 ...