`

C++实现urlencode/urldecode编码

 
阅读更多
#include<iostream>
#include<stdio.h>
#include<cstring>

using namespace std;

const char hexchars[] = "0123456789abcdef";
const char HEXCHARS[] = "0123456789ABCDEF";

int PHPhtoi(char *pszStr)
{
    int iValue;
    int iChar;
    iChar = ((unsigned char *)pszStr)[0];
    if (isupper(iChar))
        iChar = tolower(iChar);
    iValue = (iChar >= '0' && iChar <= '9' ? iChar - '0' : iChar - 'a' + 10) * 16;
    iChar = ((unsigned char *)pszStr)[1];
    if (isupper(iChar))
        iChar = tolower(iChar);
    iValue += iChar >= '0' && iChar <= '9' ? iChar - '0' : iChar - 'a' + 10;
    return (iValue);
}

char * PHPUrlEncode(const char *pszBuff , int iLen , int* piNewLength)
{
    register unsigned char uChar;
    unsigned char *pszTo, *pszStart;
    unsigned char const *pszFrom, *pszEnd;
    pszFrom = (unsigned char *)pszBuff;
    pszEnd = (unsigned char *)pszBuff + iLen;
    pszStart = pszTo = new unsigned char[3*iLen+1];
    while (pszFrom < pszEnd) {
        uChar = *pszFrom++;
        if (uChar == ' ') {
            *pszTo++ = '+';
        }
        else if ((uChar < '0' && uChar != '-' && uChar != '.') ||
                (uChar < 'A' && uChar > '9') ||
                (uChar > 'Z' && uChar < 'a' && uChar != '_') ||
                (uChar > 'z')) {
            pszTo[0] = '%';
            pszTo[1] = HEXCHARS[uChar >> 4];
            pszTo[2] = HEXCHARS[uChar & 15];
            pszTo += 3;
        }
        else {
            *pszTo++ = uChar;
        }
    }
    *pszTo = 0;
    if (piNewLength) {
        *piNewLength = pszTo - pszStart;
    }
    return (char *) pszStart;
}

int PHPUrlDecode(char *pszStr)
{
    int iLen;
    char *pszDest = pszStr;
    char *pszData = pszStr;
    iLen=strlen(pszStr);
    while (iLen--)
    {
        if (*pszData == '+')
        {
            *pszDest = ' ';
        }
        else if (*pszData == '%' && iLen >= 2
                && isxdigit((int) *(pszData + 1))
                && isxdigit((int) *(pszData + 2)))
        {

            *pszDest = (char) PHPhtoi(pszData + 1);
            pszData += 2;
            iLen -= 2;
        }
		else
        {
            *pszDest = *pszData;
        }
        pszData++;
        pszDest++;
    }
    *pszDest = '\0';
    return pszDest - pszStr;
}

int main()
{
        char a[] = "wolike%1测试";
        PHPUrlDecode(a);
		
		int blen = 0;
		char *b = PHPUrlEncode(a, strlen(a), &blen);
		
        cout << b << " " << blen << endl;
}

 

分享到:
评论

相关推荐

    用JavaScript实现PHP的urldecode/urldecode函数

    这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决

    urlencode urldecode实现

    对于 `urlencode` 和 `urldecode`,你可能需要自定义C++函数来实现这些功能,然后在C++代码中定义,并在桥接头文件中声明,使得Objective-C或Swift代码可以调用。 以下是一个简单的C++示例实现 `urlencode` 和 `url...

    用C++来实现UrlEncode

    本文将深入探讨如何使用C++语言实现URL编码(UrlEncode)功能。URL编码是一种用于处理URL中特殊字符的技术,确保它们能在互联网上安全传输。在C++中实现这一功能涉及到对字符串的遍历、字符识别以及ASCII码与十六...

    urlEncode or urlDecode

    `urlDecode` 则是`urlEncode`的逆操作,用于解码已经编码的URL,将百分比编码恢复为原始字符。在接收到URL后,服务器端或客户端通常需要执行此操作来解析出正确的信息。 在实际应用中,`urlEncode`常用于将查询参数...

    PB 进制转换 url编码 urlencode urldecode 数组排序

    自己写的,可能有bug,请大家一块学习 环境为PB12 函数(及参数) 作用 arraysort 对一维数组进行排序 decto 将十进制数字转成其它进制字符串 ...urlencode 将指定字符串以进行指定字符集url编码 涨价了,哈哈

    用JavaScript实现UrlEncode和UrlDecode的脚本代码

    在深入理解JavaScript实现UrlEncode和UrlDecode函数的过程中,我们需要理解几个关键点:首先,URL编码和解码在Web开发中是一种常见的需求,用于确保URL中的特殊字符被正确传输。其次,JavaScript提供了一些内置的...

    java net unicode / native2ascii / url decode / url encode / UTF8 / js url code

    标题中的“java net unicode / native2ascii / url decode / url encode / UTF8 / js url code”涉及了Java网络编程中的几个关键概念,这些概念在处理字符编码时非常重要。以下是对这些概念的详细解释: 1. **...

    ASP中实现的URLEncode、URLDecode自定义函数__1.docx

    本文主要讨论如何在ASP中实现URLEncode和URLDecode这两个功能,以便正确地处理URL中的特殊字符和编码问题。 首先,URL编码(URLEncode)是为了在URL中传递非ASCII字符或特殊字符时避免产生错误。URL中不能包含某些...

    UrlEncodeDecode解码编码工具(双向)

    在编程语言中,如JavaScript、Python、Java等,都有内置的函数来实现UrlEncode和UrlDecode的操作,但这些函数通常只适用于单一语言环境。而独立的工具则提供了跨平台、跨语言的解决方案,无论你使用何种技术栈,都...

    易语言URL编解码

    而URLDecode则是URLEncode的逆过程,它将百分号编码的字符串还原为原始的URL字符串。 在易语言中实现URL编解码,需要理解以下关键点: 1. 字符编码:URL编解码通常基于ASCII编码,但现代的URL标准(如RFC3986)...

    UrlEncodeUrlDecodeUrl解码Url编码工具

    相反,UrlDecode则是UrlEncode的逆过程,它将URL中编码的字符还原为原始形式。当接收到一个编码过的URL后,UrlDecode会识别并替换所有形如"%xy"的序列,将其转化为对应的ASCII字符。 UrlEncode和UrlDecode在实际...

    Python3中urlencode和urldecode的用法详解

    今天小编就为大家分享一篇Python3中urlencode和urldecode的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    C++URL编码和解码

    C++作为一门强大的系统级编程语言,虽然没有内置的URL编码和解码函数,但开发者可以借助标准库和第三方库来实现这些功能。本文将深入探讨C++中如何进行URL编码和解码。 URL(Uniform Resource Locator)是互联网上...

    用JavaScript实现PHP的urlencode与urldecode函数

    在Web开发中,URL编码(urlencode)和URL解码(urldecode)是常见的需求。这主要是为了确保URL的正确传输和使用,尤其是在URL的路径或查询字符串中包含特殊字符时。PHP中的urlencode和urldecode函数是处理这一需求的...

    Html/URL编码解码器

    包括(UrlEncode、UrlDecode、HtmlEncode、HtmlDecode),html文件,直接在浏览器操作,可查看源码

    idea插件toolsMix(记录下班时间、实时中英文翻译、jsonView、urlEncode、urlDecode、timeFormate)源码

    idea插件toolsMix (记录下班时间、实时中英文翻译、jsonView、urlEncode、urlDecode、timeFormate) 解压toolsMix.zip,toolsMix目录下的zip包为打包好的插件包,可以直接安装

    php自定义urlencode,urldecode函数实例

    总结来说,自定义urlencode和urldecode函数可以帮助开发者解决在特定场景下遇到的问题,使得URL编码和解码过程更符合项目的实际需求。通过本文提供的代码实例,我们可以学习如何实现这样的自定义函数,并在自己的...

    网络传输文本,urlEncode和decode的实现。

    在Visual Studio 2005环境下,我们可以使用内置的.NET Framework类库来实现`urlEncode`和`urlDecode`功能。`System.Web`命名空间下的`HttpUtility`类提供了这两个方法: 1. `HttpUtility.UrlEncode`: 这个静态方法...

    ASP中实现的URLEncode、URLDecode自定义函数

    URL编码(URLEncode)和解码(URLDecode)是两种常见的操作,它们用于确保URL在传输过程中保持正确无误,特别是在使用HTTP GET或POST方法时,特殊字符可能会破坏URL格式或携带数据。 在ASP中,虽然内置了server....

Global site tag (gtag.js) - Google Analytics