`
fp_moon
  • 浏览: 983073 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C实现urlencode&urldecode

 
阅读更多
static unsigned char char_to_hex( unsigned char x )
{
return (unsigned char)(x > 9 ? x + 55: x + 48);
}

static int is_alpha_number_char( unsigned char c )
{
if ( (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') )
  return 1;
return 0;
}

//url编码实现

void urlencode( unsigned char * src, int  src_len, unsigned char * dest, int  dest_len )
{
unsigned char ch;
int  len = 0;

while (len < (dest_len - 4) && *src)
{
  ch = (unsigned char)*src;
  if (*src == ' ')
  {
   *dest++ = '+';
  }
  else if (is_alpha_number_char(ch) || strchr("-_.!~*'()", ch))
  {
   *dest++ = *src;
  }
  else
  {
   *dest++ = '%';
   *dest++ = char_to_hex( (unsigned char)(ch >> 4) );
   *dest++ = char_to_hex( (unsigned char)(ch % 16) );
  } 
  ++src;
  ++len;
}
*dest = 0;
return ;
}



//解url编码实现

unsigned char* urldecode(unsigned char* encd,unsigned char* decd)
{
    int j,i;
    char *cd = encd;
    char p[2];
    unsigned int num;
j=0;

    for( i = 0; i < strlen(cd); i++ )
    {
        memset( p, '/0', 2 );
        if( cd[i] != '%' )
        {
            decd[j++] = cd[i];
            continue;
        }
 
  p[0] = cd[++i];
        p[1] = cd[++i];

        p[0] = p[0] - 48 - ((p[0] >= 'A') ? 7 : 0) - ((p[0] >= 'a') ? 32 : 0);
        p[1] = p[1] - 48 - ((p[1] >= 'A') ? 7 : 0) - ((p[1] >= 'a') ? 32 : 0);
        decd[j++] = (unsigned char)(p[0] * 16 + p[1]);
 
    }
    decd[j] = '/0';

    return decd;
}
分享到:
评论

相关推荐

    urlencode urldecode实现

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

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

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

    用JavaScript实现PHP的urlencode与urldecode函数

    针对这个问题,我们可以创建两个 JavaScript 函数:`js_urlencode` 和 `js_urldecode`,以实现与 PHP 相似的编码和解码功能。以下是一个基于UTF-8编码的实现: ```javascript // 1. JavaScript 实现的 urlencode ...

    用C++来实现UrlEncode

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

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

    URL编码(UrlEncode)和解码(UrlDecode)通常用于将特殊字符转换为安全的格式,以便在网络请求中传输。这是因为某些字符在URL中具有特殊含义,如空格、#、&等,它们需要被替换为特定的百分比编码(%)来避免混淆。 ...

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

    在做ajax中的post时,发现在服务器端取得数据时总是乱码,网上看了些解决方法也搞不定,我post过去时是xml形式,由于乱码服务器端xml也解析不了或出错。于是在post前先把它编码,到...Function URLDecode(enStr)  dim

    Python3中urlencode和urldecode的用法详解

    在Python3中,将中文进行urlencode编码使用函数 urllib.parse.quote(string, safe='/', encoding=None, errors=None) 而将编码后的字符串转为中文,则使用 urllib.parse.unquote(string, encoding='utf-8', errors...

    php自定义urlencode,urldecode函数实例

    `urlencode`函数将字符串中的特殊字符转换为适合URL的格式,而`urldecode`则将经过`urlencode`编码的字符串还原。在某些特定场景下,如配合JavaScript的Ajax操作时,可能需要自定义这些函数来满足特定的编码和解码...

    ASP中只有UrlEncode,没有Urldecode问题的解决方法?

    以下是一个简单的UrlDecode函数的实现过程,该函数通过遍历输入的URL编码字符串,按照UrlEncode的规则进行逆向操作,将编码后的十六进制数值转换回对应的字符。 ```vbscript Function URLDecode(enStr) Dim deStr ...

    URL编码C语言实现.docx

    该实现提供了两个函数:URLEncode 和 URLDecode。URLEncode 函数用于将字符串进行 URL 编码,而 URLDecode 函数用于将字符串进行 URL 解码。两个函数都使用了缓冲区来存储结果,以便提高性能。 知识点6:应用场景 ...

    js中escape对应的C#解码函数 UrlDecode

    1. **方法类型**:`HttpUtility.UrlEncode`和`HttpUtility.UrlDecode`是静态方法,而`Server.UrlEncode`和`Server.UrlDecode`是实例方法,需要通过`HttpServerUtility`类的实例(如`Page`类的`Server`属性)来调用。...

    ASP的URLDecode函数URLEncode解码函数

    代码如下:‘================================================ ‘函数名:URLDecode ‘作 用:URL解码 ‘================================================ Function URLDecode(ByVal urlcode) Dim start,final,...

    Javascript UrlDecode函数代码

    有时候可能会有这么一个需求,我在后台使用: 代码如下: HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8); 将Url进行编码,前台JS需要使用这段内容,这时候就需要解码了: 代码 代码如下: /** * Url编码 **/ ...

    url decode problem 解决方法

    相对应地,解码时也有`urldecode`和`rawurldecode`。这种设计可能给开发者带来困扰,因为需要根据实际场景选择合适的编码函数。 解决URL编码问题的关键在于理解各种编码函数的差异,并根据应用需求选择正确的方法。...

    EX_SDI.zip

    在完成基本要求(MFC编程基础)后实现了十种编码解码(base64encode、base64encode、char2hex、hex2char、URLencode、URLdecode、UTF8 2 Unicode、Unicode 2 UTF8、曼彻斯特、差分曼彻斯特),和八种加解密(DES加...

    url rewrite 时,中文参数解决方法:用到的解码函数

    针对上述问题,我们可以编写一个自定义的解码函数`URLDecode`,该函数能够将经过编码的URL参数转换回原始的中文字符。下面将详细介绍此函数的实现细节。 #### 解码函数实现 ```vb Function URLDecode(enStr) Dim ...

    C++URL编码和解码

    std::string urlDecode(const std::string& input) { std::string decoded; decoded.reserve(input.size()); std::istringstream iss(input); int hex1, hex2; char c; while (iss &gt;&gt; std::skipws) { if (iss...

    asp页面和Asp.net页面传中文参数UrlEncode编码以及接收解码

    str=”+HttpUtility.UrlEncode(str) ,解码方式为HttpUtility.UrlDecode(Request.QueryString[“str”].ToString().Trim()) asp的Get方式传送为”webPage.aspx?str=”+server.urlencode(str) 两种编码不统一 解决方案...

    asp自定义函数:URL编码和解码

    然而,现代的ASP.NET框架提供了内置的HttpUtility.UrlEncode和HttpUtility.UrlDecode方法,这些方法更加高效和安全,建议在可能的情况下使用这些内置函数。但在旧的ASP项目中,自定义函数仍是一种实用的解决方案。

Global site tag (gtag.js) - Google Analytics