c++ encode decode

 1 std::string UrlEncode(const std::string& szToEncode)
 2 {
 3     std::string src = szToEncode;
 4     char hex[] = "0123456789ABCDEF";
 5     string dst;
 6
 7     for (size_t i = 0; i < src.size(); ++i)
 8     {
 9         unsigned char cc = src[i];
10         if (isascii(cc))
11         {
12             if (cc == ‘ ‘)
13             {
14                 dst += "%20";
15             }
16             else
17                 dst += cc;
18         }
19         else
20         {
21             unsigned char c = static_cast<unsigned char>(src[i]);
22             dst += ‘%‘;
23             dst += hex[c / 16];
24             dst += hex[c % 16];
25         }
26     }
27     return dst;
28 }
29
30
31 std::string UrlDecode(const std::string& szToDecode)
32 {
33     std::string result;
34     int hex = 0;
35     for (size_t i = 0; i < szToDecode.length(); ++i)
36     {
37         switch (szToDecode[i])
38         {
39         case ‘+‘:
40             result += ‘ ‘;
41             break;
42         case ‘%‘:
43             if (isxdigit(szToDecode[i + 1]) && isxdigit(szToDecode[i + 2]))
44             {
45                 std::string hexStr = szToDecode.substr(i + 1, 2);
46                 hex = strtol(hexStr.c_str(), 0, 16);
47                 //字母和数字[0-9a-zA-Z]、一些特殊符号[$-_.+!*‘(),] 、以及某些保留字[$&+,/:;[email protected]]
48                 //可以不经过编码直接用于URL
49                 if (!((hex >= 48 && hex <= 57) || //0-9
50                     (hex >=97 && hex <= 122) ||   //a-z
51                     (hex >=65 && hex <= 90) ||    //A-Z
52                     //一些特殊符号及保留字[$-_.+!*‘(),]  [$&+,/:;[email protected]]
53                     hex == 0x21 || hex == 0x24 || hex == 0x26 || hex == 0x27 || hex == 0x28 || hex == 0x29
54                     || hex == 0x2a || hex == 0x2b|| hex == 0x2c || hex == 0x2d || hex == 0x2e || hex == 0x2f
55                     || hex == 0x3A || hex == 0x3B|| hex == 0x3D || hex == 0x3f || hex == 0x40 || hex == 0x5f
56                     ))
57                 {
58                     result += char(hex);
59                     i += 2;
60                 }
61                 else result += ‘%‘;
62             }else {
63                 result += ‘%‘;
64             }
65             break;
66         default:
67             result += szToDecode[i];
68             break;
69         }
70     }
71     return result;
72 }

在线测试工具:http://tool.chinaz.com/Tools/URLEncode.aspx

c++ encode decode

时间: 2024-09-30 04:15:52

c++ encode decode的相关文章

Javascript Base64 Encode &amp; Decode

html代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Page Title</title> 5 <style type="text/css"> 6 *{font-family: Consolas;font-style: italic} 7 .responsebox{width:900px;margin:10px auto;padding:10px;border:2

node_nibbler:自定义Base32/base64 encode/decode库

https://github.com/mattrobenolt/node_nibbler 可以将本源码复制到自己需要的JS文件中,比如下面这个文件,一个基于BASE64加密请求参数的REST工具: [附件:]REST-TEST.html <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

【python】UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode/decode characters

解决方案在文件头插入 # encoding=utf8 import sys reload(sys) sys.setdefaultencoding('utf8') [python]UnicodeEncodeError: 'ascii' codec can't encode/decode characters

转 Python——UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode/decode characters

转自: http://blog.csdn.net/zuyi532/article/details/8851316 我是写爬虫的时候遇到的问题,百度了一下,先贴解决方案: 在代码中加入: import sys reload(sys) sys.setdefaultencoding('utf8') 初学Python被编码格式搞的很头大,以下bug是遇到的编码问题之一: [BUG]UnicodeEncodeError: 'ascii' codec can't encode characters in p

编码-encode,decode

编码:decode:解码:把一种编码转换成unicodeencode:编码:把unicode转换成其他编码gbk -> utf-8 ? xxgbk -> unicode -> utf-8gbk.decode('gbk').encode('utf-8')例子:翻译水平汉语 -> 英语 英语 -> 汉语日语 -> 英语 英语 -> 日语 汉语 -> 日语汉语 -> 英语 -> 日语

[Python函数]encode,decode

前言: 我们知道,计算机是以二进制为单位的,也就是说计算机只识别0和1,也就是我们平时在电脑上看到的文字,只有先变成0和1,计算机才会识别它的意思.这种数据和二进制的转换规则就是编码.计算机的发展中,有ASCII码,GBK,Unicode,utf-8编码.我们先从编码的发展史了解一下编码的进化过程. 编码发展史 美国人发明了计算机,用八位0和1的组合,一一对应英文中的字符,整出了一个表格,ASCII表. 计算机传入中国,中国地大物博,繁体字和简体字多,8位字节最多表示256个字符,满足不了,于是

Security Encode &amp; Decode

加密的方法是由某管理系统的登录密码加密方法修改得到的,解密的方法是本人写的. 1 <html> 2 <head> 3 <title>Powered By Leisureeen</title> 4 </head> 5 <script language="JavaScript"> 6 function securityEncode(){ 7 var pwd = document.getElementById("

JS encode decode

网上查到的全都是escape,和需要的编码不是一回事,好不容易找到的结果 保存下来以备以后使用 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1.   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断. 例如:<script language="javascript">docu

Encode &amp; decode

1. 埃特巴什码 (Aitebashen Password) Definition: 最后一个字母代表第一个字母,倒数第二个字母代表第二个字母. 常文:a b c d e f g h i j k l m n o p q r s t u v w x y z密文:z y x w v u t s r q p o n m l k j i h g f e d c b a Background: 这种密码是由熊斐特博士发现的. 熊斐特博士为库姆兰<死海古卷>的最初研究者之一,他在<圣经>历史研