美文网首页工作生活
C/C++ - URL编码(符号自定义可增减)

C/C++ - URL编码(符号自定义可增减)

作者: 後輪追前輪 | 来源:发表于2019-06-30 23:21 被阅读0次

根据URL encode 与 URL decode 的C语言实现代码自己重写的方便理解的代码 >可能有BUG< 建议还是按连接理解,再考虑是否合适本人不负任何后果,实际上以下代码可以实现增删和自定编码成什么样子建议还是按标准写URL编码-百度百科
示例:

void URLencode(char* input, char *output,int inLen){
//注意output要比input大否则存在溢出 因为重编码一个字符要变三个
  for(int i=0;i<inLen;i++){
    switch(*input){
//重编码  格式 %16#  例如 + 在ASCII表中十六进制表示为0x2B 则编码为 %2B 
//但空格比较特殊编码成 + 在(PHP下) 其他一般为%20 建议用在线工具验证以防出错
      case '+':   *output++='%';*output++='2';*output++='B';   break;
      case ' ':   *output++='+';  break;   //空格会编码成+(在PHP)并不是写错 其他一般为%20
      case '/':   *output++='%';*output++='2';*output++='F';   break;
      case '?':   *output++='%';*output++='3';*output++='F';   break;
      case '%':   *output++='%';*output++='2';*output++='5';   break;
      case '#':   *output++='%';*output++='2';*output++='3';   break;
      case '&':   *output++='%';*output++='2';*output++='6';   break;
      case '=':   *output++='%';*output++='3';*output++='D';   break;
      default:    *output++ = *input;   break;//不用重新编码
    }
    *input++;
  }
}

因本人目前只用到这几种需要编码的,还有其他的并未加上,请自行添加!!!
因本人目前只用到这几种需要编码的,还有其他的并未加上,请自行添加!!!
因本人目前只用到这几种需要编码的,还有其他的并未加上,请自行添加!!!

在不同编译器下编码也会不同!!!
在不同编译器下编码也会不同!!!
在不同编译器下编码也会不同!!!

----------------------重要事情都说三遍-------------------------

测试结果如图:

URL编码截图.png
结果与URL在线计算不同是因为@并未在此函数中所以并没有被编码加上即可(如下图)
URL编码截图1.png

*********URL解码未用到暂时不写(懒)*********

相关文章

网友评论

    本文标题:C/C++ - URL编码(符号自定义可增减)

    本文链接:https://www.haomeiwen.com/subject/nusicctx.html