URL Encode
- //URL 编解码类
- //来自PHP源码
- class CRtUrlConv
- {
- public:
- static char *urlencode(const char *in_str )
- {
- char *out_str;
- int in_str_len, out_str_len;
- in_str_len=strlen(in_str);
- out_str_len=0;
- out_str = php_url_encode( in_str , in_str_len, &out_str_len);
- return (char *) out_str;
- }
- static int urldecode(char *s)
- {
- return php_url_decode(s);
- }
- private:
- static char *php_url_encode(const char *s , int len , int *new_length)
- {
- register unsigned char c;
- unsigned char *to, *start;
- unsigned char const *from, *end;
- from = (unsigned char *)s;
- end = (unsigned char *)s + len;
- start = to = new unsigned char[3*len+1];
- while (from < end) {
- c = *from++;
- if (c == ' ') {
- *to++ = '+';
- #ifndef CHARSET_EBCDIC
- } else if ((c < '0' && c != '-' && c != '.') ||
- (c < 'A' && c > '9') ||
- (c > 'Z' && c < 'a' && c != '_') ||
- (c > 'z')) {
- to[0] = '%';
- to[1] = HEXCHARS[c >> 4];
- to[2] = HEXCHARS[c & 15];
- to += 3;
- #else /*CHARSET_EBCDIC*/
- } else if (!isalnum(c) && strchr("_-.", c) == NULL) {
- /* Allow only alphanumeric chars and '_', '-', '.'; escape the rest */
- to[0] = '%';
- to[1] = HEXCHARS[os_toascii[c] >> 4];
- to[2] = HEXCHARS[os_toascii[c] & 15];
- to += 3;
- #endif /*CHARSET_EBCDIC*/
- } else {
- *to++ = c;
- }
- }
- *to = 0;
- if (new_length) {
- *new_length = to - start;
- }
- return (char *) start;
- }
- static int php_url_decode(char *str)
- {
- int len;
- char *dest = str;
- char *data = str;
- len=strlen(str);
- while (len--) {
- if (*data == '+') {
- *dest = ' ';
- }
- else if (*data == '%' && len >= 2 && isxdigit((int) *(data + 1))
- && isxdigit((int) *(data + 2))) {
- #ifndef CHARSET_EBCDIC
- *dest = (char) php_htoi(data + 1);
- #else
- *dest = os_toebcdic[(char) php_htoi(data + 1)];
- #endif
- data += 2;
- len -= 2;
- } else {
- *dest = *data;
- }
- data++;
- dest++;
- }
- *dest = '/0';
- return dest - str;
- }
- static int php_htoi(char *s)
- {
- int value;
- int c;
- c = ((unsigned char *)s)[0];
- if (isupper(c))
- c = tolower(c);
- value = (c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16;
- c = ((unsigned char *)s)[1];
- if (isupper(c))
- c = tolower(c);
- value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10;
- return (value);
- }
- static const char hexchars[];
- static const char HEXCHARS[];
- };
- const char CRtUrlConv::hexchars[] = "0123456789abcdef";
- const char CRtUrlConv::HEXCHARS[] = "0123456789ABCDEF";
- }
URL Encode的更多相关文章
- iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html
iOS/Android/Web Url Encode空格處理 原文連結:http://read01.com/3gDO.html 前言 這裡只是講一個故事,一個發生在我身上的真實的故事.曾經,我以為搞加 ...
- get请求中的url encode问题
首先发表一下感慨,Python的requests模块确实太简便,省却了很多的转码等等等等的问题,但这也是缺点,对于我这种基础不好的同学来说让我少知道了许多本来应该知道的东西. url encode: ...
- ios Url Encode
//ios Url Encode //有时候在请求的参数里里特殊符号比如“+”等.而如果没有encode的话那么传过去的还是” ”,面实际上是%2B. -(NSString*)UrlValueEnco ...
- Swift URL encode
前言 在WEB前端开发,服务器后台开发,或者是客户端开发中,对URL进行编码是一件很常见的事情,但是由于各个年代的RFC文档中的内容一直在变化,一些年代久远的代码就对URL编码和解码的规则和现在的有一 ...
- 为什么要做url encode
因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 url 中不能包含 @ 字符.
- URL encode 与 URL decode 的C语言实现
转载自:http://blog.csdn.net/langeldep/article/details/6264058 本文代码为从PHP代码中修改而来,只保留了2个函数. int php_url_de ...
- C++语言的url encode 和decode
std::string UrlEncode(const std::string& szToEncode) { std::string src = szToEncode; char hex[] ...
- Java与.net 关于URL Encode 的区别
在c#中,HttpUtility.UrlEncode("www+mzwu+com")编码结果为www%2bmzwu%2bcom,在和Java开发的平台做对接的时候,对方用用url编 ...
- 关于URL encode和parse
from urllib import parses = 'https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&tn=baidu& ...
随机推荐
- PostGIS安装
PostGIS安装 1.软件下载 postgresql-9.6.1-1-windows-x64-binaries.zip https://www.postgresql.org/download/win ...
- 使用excel开发平台活字格搭建物流管理系统
物流管理系统是指包含完整的物流公司信息.物流寄件信息.物流运输信息以及物流寄件单位等管理系统.功能完善的物流管理系统,能帮助物流企业更好的进行物流管理. 下面我们借助活字格,来设计一个简单的物流管理系 ...
- 树莓派 MPG视频硬件解码破解 Raspberry Pi Patch for MPEG-2, VC-1 license
Enable the Pi's hardware decoding of MPEG-2 and VC-1 MPEG2 patents have expired If you have start.e ...
- vue与原生混合开发
前段时间,做了一个混合开发的项目,主要是以vue框架开发h5页面,使用cordova作为中间沟通桥梁,实现了h5与安卓.iOS的混合开发,由于从事iOS开发,h5也是刚接触不久,很多深入原理还不太清楚 ...
- url override and HttpSession implements session for real
无论cookie有没有禁用,HttpSession都有效 package com.test; import javax.servlet.ServletException; import javax.s ...
- Expo大作战(十一)--expo中的预加载和缓存资产(Preloading & Caching Assets),expo中的图标 (Icon)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- 【Java入门提高篇】Day4 Java中的回调
又忙了一周,事情差不多解决了,终于有可以继续写我的博客了(各位看官久等了). 这次我们来谈一谈Java里的一个很有意思的东西——回调. 什么叫回调,一本正经的来讲,在计算机程序设计中,回调函数是指通过 ...
- python的函数(三)
1,函数多类型传值和冗余参数 2,递归函数 1,函数多类型传值和冗余参数 1.0,函数多类型传值 定义1个函数, def fun(x,y): return x+y 调用该函数print fun(1,2 ...
- Python3部分Print输出格式
print("Hello World!") #直接打印字符串 print('Hello World!') #对于python,单引号也可以表示字符串 name = 'Tom' #自 ...
- android kl文件
android kl(key layout)文件是一个映射文件,是标准linux与anroid的键值映射文件,kl文件可以有很多个,但是它有一个使用优先级: /system/usr/keylayout ...