URL编码简单实现

 我们在调用某些GET请求的时候需要调用参数,当我们通过编程来实现的时候会碰到一些尴尬情况,我们的调用参数没有被编码。有鉴于此,我在做某个项目的时候突发一个奇怪的想法,就是自己编码自己解码。当时想到就做,就这样我就写了简单的函数来实现编解码,自己对特殊字符和中文进行编解码。现在这些函数应用在SiteView ECC 7.0中,具体实现代码如下,抛砖引玉希望能给各位以启迪吧。

/
// 函数     url_Encode
// 说明     url编码
// 参数     待编码字符串
// 返回值   编码后字符串
/
string url_Encode(const char* pszValue)
{
    string szEnUrl ("");
    int nSize = static_cast<int>(strlen(pszValue) * 3) + 1;
    char *chEncode = new char[nSize];

    const char *pPos = pszValue;
    if(chEncode)
    {
        memset(chEncode, 0, nSize);
        char *pTmp = chEncode;
        while(*pPos != '/0')
        {
            if(*pPos >= 48 && *pPos <= 57) // 0-9
            {
                *pTmp = *pPos;
                pTmp ++;
            }
            else if(*pPos >= 65 && *pPos <= 90) // A-Z
            {
                *pTmp = *pPos;
                pTmp ++;
            }
            else if(*pPos >= 97 && *pPos <= 122) // a-z
            {
                *pTmp = *pPos;
                pTmp ++;
            }
            else if(*pPos == '.') // .
            {
                *pTmp = *pPos;
                pTmp ++;
            }
            else if(*pPos >=0 && *pPos <= 255) // 其他ASICC字符
            {
                *pTmp = '%';
                pTmp++;
                sprintf(pTmp, "%x", *pPos);
                pTmp += 2;
            }
            pPos++;
        }

        szEnUrl = chEncode;
        delete []chEncode;
    }
    return szEnUrl;
}
看到此处,相信各位也就能知道我是如何实现解码的了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值