URLEncode:
用于编码URL字符串,数字和字母保持不变,空格变为'+',其他(如:中文字符)先转换为十六进制表示,然后在每个字节前面加一个标识符%,
例如:“啊”字 Ascii的十六进制是0xB0A1——>%B0%A1
代码实现:
1 unsigned char CHAR_TO_HEX( unsigned char ch ) 2 { 3 //0xa(10)转化为字符'A'(65),要加上55 //0x0(0)转化为字符'0'(48),要加上48 4 return (unsigned char)(ch > 9 ? ch + 55: ch + 48); 5 } 6 7 std::string URLEncode(const char* pSrc) 8 { 9 unsigned char chTemp; 10 std::string strDest; 11 12 while (*pSrc) 13 { 14 chTemp = (unsigned char)*pSrc; 15 if ( (chTemp >= 'a' && chTemp <= 'z') || (chTemp >= 'A' && chTemp <= 'Z') || (chTemp >= '0' && chTemp <= '9') 16 || strchr("-_.!~*'()", chTemp)) 17 { 18 strDest += chTemp; 19 } 20 else if (chTemp == ' ') 21 { 22 *pDest++ = '+'; 23 } 24 else 25 { 26 strDest += '%'; 27 strDest += CHAR_TO_HEX( (unsigned char)(chTemp >> 4) ); 28 strDest += CHAR_TO_HEX( (unsigned char)(chTemp & 0x0f) ); 29 } 30 ++pSrc; 31 } 32 33 return strDest; 34 }
URLDecode:
用于解码已编码的URL 字符串,解码方式与URLEncode相反
代码实现:
1 unsigned char* URLDecode(unsigned char* pSrc, std::string &strDest) 2 { 3 char szTemp[2]; 4 5 while (*pSrc) 6 { 7 memset(szTemp, '/0', 2 ); 8 if( *pSrc != '%' && *pSrc != ' ') 9 { 10 strDest += *pSrc++; 11 continue; 12 } 13 else if( *pSrc == ' ' ) 14 { 15 strDest += '+'; 16 continue; 17 } 18 //忽略% 19 ++pSrc; 20 unsigned char cTmp = 0; 21 22 for (int k = 0; k < 2 && *pSrc; ++k, ++pSrc) //例如:将%3f ---> 0x3f 23 { 24 if(*pSrc <= '9')//0x30~0x39 25 { 26 cTmp |= (*pSrc & 0x0f) << (1 - k) * 4; 27 } 28 else if(*pSrc >= 'a')//0x61~7a 29 { 30 cTmp |= (*pSrc - 0x57) << (1 - k) * 4; 31 } 32 else//0x41~5a 33 { 34 cTmp |= (*pSrc - 0x37) << (1 - k) * 4; 35 } 36 } 37 strDest += cTmp; 38 } 39 return 0; 40 }
功不成,身已退
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2013-04-01 状态图试验
2013-04-01 NYOJ-70 阶乘因式分解(二)
2013-04-01 c/s网络编程
2013-04-01 HDOJ-4535 吉哥系列故事——礼尚往来
2013-04-01 HDOJ-4530 小Q系列故事——大笨钟