C++ URLDecode和URLEncode实现

转载——http://blog.163.com/zhangjie_0303/blog/static/9908270620148251658993/

#include <iostream>

#include <stdlib.h>

#include <string.h>

using namespace std;

typedef unsigned char BYTE;

inline BYTE toHex(const BYTE &x)

{

return x > 9 ? x -10 + ‘A‘: x + ‘0‘;

}

inline BYTE fromHex(const BYTE &x)

{

return isdigit(x) ? x-‘0‘ : x-‘A‘+10;

}

inline string URLEncode(const string &sIn)

{

string sOut;

for( size_t ix = 0; ix < sIn.size(); ix++ )

{

BYTE buf[4];

memset( buf, 0, 4 );

if( isalnum( (BYTE)sIn[ix] ) )

{

buf[0] = sIn[ix];

}

//else if ( isspace( (BYTE)sIn[ix] ) ) //貌似把空格编码成%20或者+都可以

//{

//    buf[0] = ‘+‘;

//}

else

{

buf[0] = ‘%‘;

buf[1] = toHex( (BYTE)sIn[ix] >> 4 );

buf[2] = toHex( (BYTE)sIn[ix] % 16);

}

sOut += (char *)buf;

}

return sOut;

};

inline string URLDecode(const string &sIn)

{

string sOut;

for( size_t ix = 0; ix < sIn.size(); ix++ )

{

BYTE ch = 0;

if(sIn[ix]==‘%‘)

{

ch = (fromHex(sIn[ix+1])<<4);

ch |= fromHex(sIn[ix+2]);

ix += 2;

}

else if(sIn[ix] == ‘+‘)

{

ch = ‘ ‘;

}

else

{

ch = sIn[ix];

}

sOut += (char)ch;

}

return sOut;

}

/*int main(int argc, char** argv)

{

string test_str1 = "老同学";

//string test_str2 = URLEncode(test_str1);

string test_str2 = "%89%E6%B1%89%E6%B1%89";

cout << "test_str2=" << test_str2 <<endl;

string test_str3 = URLDecode(test_str2);

cout << "test_str3=" << test_str3 <<endl;

return 0;

}*/

时间: 2024-10-27 10:09:46

C++ URLDecode和URLEncode实现的相关文章

php中urldecode()和urlencode()和stripslashes() 的作用

urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符 stripslashes() 函数 实例 删除反斜杠: <?php echo stripslashes("Who\'s Bill Gates?"); ?> 运行实例 定义和用法 stripslashes() 函数删除由 addslashe

php中urldecode()和urlencode()起什么作用

urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符.urlencode()编码:对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).urldecode()解码:还原 URL 编码字符串. !*** 其实这样做的目的只有一个:防止中文乱码,再没别的用

Python 中的urlencode和urldecode

python中的urlencode与urldecode 发表于2013/11/13 16:04:09  79983人阅读 分类: python 当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换. 一.urlencode urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,比如: >>

python(24)urlencode和urldecode

当url地址含有中文,或者参数有中文的时候,这个算是很难正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至‘/’做一下编码转换. 一.urlencode urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,比如: 1 >>> from urllib import urlencode 2 >>> data = { 3 ... 'a':

python中的urlencode与urldecode

当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换. 一.urlencode urllib库里面有个urlencode函数,可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,比如: >>> from urllib import urlencode >>> data = { ... 'a': 'test',

解码URLDecode和编码URLEnCode

在前台往后台传递参数的时候,在前台进行编码,在后台接收参数的时候,用Decode进行解码: 如果url中包含特殊字符如:&.html标签 <tr><td>等导致url无法正确解析需要用对ur进行l编码和解码,防止了传输过程中的错误 Server.UrlDecode(); Server.UrlEncode();是两个成对的方法作用是在URL传参时如果直接传中文可能会出问题(对中文参数支持部完善),所以先用 Server.UrlEncode("中文参数");

php中UrlEncode()作用

Server.UrlDecode(); Server.UrlEncode(); 是两个成对的方法 作用是在URL传参时如果直接传中文可能会出问题(对中文参数支持部完善),所以先用 Server.UrlEncode("中文参数");编码 到另外一个页面接受的时候在用Server.UrlDecode("编码后参数一般为 %+ 16进制数的形式");解码获取中文参数

PHP 中 json_encode中文处理、urlencode方法、post中文乱码

当使用php自带的json_encode对数据进行编码时,中文都会变成unicode,导致不可读.如:对字符串”厦门“进行json_encode后,输出的是"\u53a6\u95e8". u5fae\u535a\u6700\u65b0\u66f4\u65b0为unicode 编码大多数在 js 或者 json 里面常见~ 查询了一下,有两种方法: 1.将"\u53a6\u95e8"还原成“厦门”,使用如下的代码: $str= preg_replace("#

浅谈 PHP 中的多种加密技术及代码示例

信息加密技术的分类 单项散列加密技术(不可逆的加密) 属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数 MD5 string md5 ( string $str [, bool $raw_output = false ] ); //MD5加密,输入任意长度字符串返回一个唯一的32位字符 md5()为单向加密,没有逆向解密算法,但是还是可以对一些常见的字符串通过收集,枚举,碰撞等方法破解;所以为了让其破解起来更麻烦一些,所以我们一般加一点盐值(salt)并双