VC实现URL编解码

    bool  DecodeUrl(char *Src, char  *url, int  MaxLen)
    {
        if(NULL == url || NULL == Src)
        {
            return false;
        }
        if(MaxLen == 0)
        {
            return false;
        }  

        char  *p = Src;  // 用来循环
        int    i = 0;    // i用来控制url数组  

        /* 临时保存url编码的数据
           例如: %1A%2B%3C
        */
        char  t = '\0';
        while(*p != '\0' && MaxLen--)
        {
            if(*p == 0x25) // 0x25 = '%'
            {
                /* 以下是十六进制数中常出现的大写字母,小写字母,数字的判断 */
                if(p[1] >= 'A' && p[1] <= 'Z') // 大写字母
                {
                    t = p[1] - 'A' + 10;  // A = 10,下同
                }
                else if(p[1] >= 'a' && p[1] <= 'z') // 小写字母
                {
                    t = p[1] - 'a' + 10;
                }
                else if(p[1] >= '0' && p[1] <= '9') // 数字
                {
                    t = p[1] - '0';
                }
                t *= 16;  // 将数放到十位上去  

                if(p[2] >= 'A' && p[2] <= 'Z') // 大写字母
                {
                    t += p[2] - 'A' + 10;
                }
                else if(p[2] >= 'a' && p[2] <= 'z') // 小写字母
                {
                    t += p[2] - 'a' + 10;
                }
                else if(p[2] >= '0' && p[2] <= '9') // 数字
                {
                    t += p[2] - '0';
                }  

                // 到此合成了一个十六进制数
                url[i] = t;  

                p += 3, i++;
            }
            else
            {
                // 没有被url编码的数据
                // '+'特殊处理.它相当于一个空格
                if(*p != '+')
                {
                    url[i] = *p;
                }
                else
                {
                    url[i] = 0x20;
                }
                i++;
                p++;
            }
        }
        url[i] = '\0';  // 结束符
        return true;
    }  

时间: 2024-10-17 05:07:35

VC实现URL编解码的相关文章

实际项目中前后端传输字符串URL编解码过程中遇到的一些问题

线上版本(包括12.2,12.3版本)中,参照过滤条件在传输过程中经过了URL编码及解码过程,前后端使用的API之间的差异导致一些问题,现记录如下: 前端URL编码API encodeURIComponent使用UTF-8编码格式对字符串进行URL编码: 后端URL解码API:目前代码中存在以下三种解码方式: System.Web.UI.Server.UrlDecode,存在问题:无法解析%2B为+,输出为空白字符: Microsoft.JScript.GlobalObject.unescape

url编解码

代码 from urllib.parse import quote,unquote,urlencode print(quote('https://www.cnblogs.com/?a=bc&d=f')) print(urlencode({'a':'b','b':'c'})) print(unquote('https%3A//www.cnblogs.com/%3Fa%3Dbc%26d%3Df')) print(unquote('a=b&b=c')) #编码 #quote操作的是字符串类型,把

Qt中gb2312/GBK的URL编解码函数

编码函数: QByteArray encodeURI(QString str) { QByteArray array; QTextCodec *codec=QTextCodec::codecForName("GBK"); QByteArray tmpArray; tmpArray = codec->fromUnicode(str); for(int i=0,size = tmpArray.length();i<size;i++){ char ch = tmpArray.at

详解JavaScript中的Url编码/解码,表单提交中网址编码

本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数escape / unescape,encodeURI / decodeURI和 encodeURIComponent / decodeURIComponent. 预备知识 foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/ \_______

url 中文编解码

unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, Web.HT

C++编解码URL

#pragma once #include <iostream> #include <string> #include <windows.h> using namespace std; class strCoding { public: strCoding(void); ~strCoding(void); void UTF_8ToGB2312(string &pOut, char *pText, int pLen);//utf_8转为gb2312 void GB

各种音视频编解码学习详解

各种音视频编解码学习详解 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范 标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很少采用了.所以豆丁上看不出所以然,从 wiki上查.中文的wiki信息量有限,很短,而wiki的英文内容内多,删减版

FFMPEG视音频编解码零基础学习方法-b

感谢大神分享,虽然现在还看不懂,留着大家一起看啦 PS:有不少人不清楚“FFmpeg”应该怎么读.它读作“ef ef em peg” 0. 背景知识 本章主要介绍一下FFMPEG都用在了哪里(在这里仅列几个我所知的,其实远比这个多).说白了就是为了说明:FFMPEG是非常重要的. 使用FFMPEG作为内核视频播放器: Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音... 使用FFMPEG作为内核的Directshow Filter: ffdshow,lav fil

FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟.“大神”们水平高超,探讨着深奥的问题:而初学者们还停留在入门阶段.究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,却没有一个循序渐进,由简单到复杂的教程.现在网上的有关FFMPEG的教程多半难度比较大,不太适合刚接