博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言实现UrlEncode编码/UrlDecode解码
阅读量:4321 次
发布时间:2019-06-06

本文共 2152 字,大约阅读时间需要 7 分钟。

#include 
#include
#define BURSIZE 2048int hex2dec(char c){ if ('0' <= c && c <= '9') { return c - '0'; } else if ('a' <= c && c <= 'f') { return c - 'a' + 10; } else if ('A' <= c && c <= 'F') { return c - 'A' + 10; } else { return -1; }}char dec2hex(short int c){ if (0 <= c && c <= 9) { return c + '0'; } else if (10 <= c && c <= 15) { return c + 'A' - 10; } else { return -1; }}//编码一个url void urlencode(char url[]){ int i = 0; int len = strlen(url); int res_len = 0; char res[BURSIZE]; for (i = 0; i < len; ++i) { char c = url[i]; if ( ('0' <= c && c <= '9') || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '/' || c == '.') { res[res_len++] = c; } else { int j = (short int)c; if (j < 0) j += 256; int i1, i0; i1 = j / 16; i0 = j - i1 * 16; res[res_len++] = '%'; res[res_len++] = dec2hex(i1); res[res_len++] = dec2hex(i0); } } res[res_len] = '\0'; strcpy(url, res);}// 解码urlvoid urldecode(char url[]){ int i = 0; int len = strlen(url); int res_len = 0; char res[BURSIZE]; for (i = 0; i < len; ++i) { char c = url[i]; if (c != '%') { res[res_len++] = c; } else { char c1 = url[++i]; char c0 = url[++i]; int num = 0; num = hex2dec(c1) * 16 + hex2dec(c0); res[res_len++] = num; } } res[res_len] = '\0'; strcpy(url, res);}int main(int argc, char *argv[]){ char url[100] = "二份"; urlencode(url); //编码后 printf("%s\n", url);   //char buf[100] = "%E4%BA%8C%E4%BB%BD";  //当使用utf-8编码时  "二份"解码出来为此 char buf[100] = "%B6%FE%B7%DD";      //当使用gb2312编码时 "二份"解码出来为此 urldecode(buf); //解码后 printf("%s\n", buf); return 0;}

 

运行结果 

 

转载于:https://www.cnblogs.com/quliuliu2013/p/9915288.html

你可能感兴趣的文章
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
64位MATLAB和C混合编程以及联合调试
查看>>
原生js大总结二
查看>>
PHP基础
查看>>
UVa 11488 超级前缀集合(Trie的应用)
查看>>
Django 翻译与 LANGUAGE_CODE
查看>>