`
fp_moon
  • 浏览: 971129 次
  • 性别: 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;
}
分享到:
评论

相关推荐

    用JavaScript实现PHP的urlencode与urldecode函数

    很多朋友说JavaScript的decodeURI函数也可以实现,但有bug所有呢,下面看下下面的函数,经过测试使用暂时没什么问题,我在之前的文章说过,这个和php的urldecode函数根本不是一回事。下面是我根据高人的代码改写的...

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

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

    ASP的URLDecode函数URLEncode解码函数

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

    php自定义urlencode,urldecode函数实例

    本文实例讲述了php自定义urlencode,urldecode函数。分享给大家供大家参考。具体如下: //配合JavaScript的ajaxObject函数, 对字串进行转码. function ajax_encode($str){ $patern = array("/%/","/=/","/&/"); /...

    Python3中urlencode和urldecode的用法详解

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

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

    代码如下:[removed] Function str2asc(strstr) str2asc = hex(asc(strstr)) End Function Function asc2str(ascasc) asc2str = chr(ascasc) ... 代码如下: function str2asc(strstr){ return (“0″+strstr.charC

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

    在ASP中传递参数时有一个很有用的系统函数Server.UrlEncode,可以将一些非字母数字的特殊符号转换成标准URL编码(其实就是16进制ASC码),这样就解决了参数传递问题,然后我以为也提供了Server.UrlDecode,但使用后...

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

    js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s) //注意编码 需要注意的几点: 1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法。...

    Javascript UrlDecode函数代码

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

    EX_SDI.zip

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

    Javascript下的urlencode编码解码方法附decodeURIComponent

    而相信碰到过此问题的朋友应该都有所了解,目前网络上流行一些js下的自定义函数去解决这个问题,如说vbscript(URLDecode())、javascript(UrlDecode())等。而这两个函数,都无法很好的与asp(Server.Ur

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

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

    给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug

    encoding已经先一步处理了url ,而PHP又解了一次 例如 x.php?s=+/+/ 那么$_GET[‘s’]得到的是 +/ / urlencode(“+”) = + urlencode(“+”) = + 所以,这个url被decode了两次 第一次是 urldecode( ...

    CodeIgniter 完美解决URL含有中文字符串

    因为Web Server会在接收到一个被urlencode的URL后自动将其decode,然后在PHP里得到的这些字符串转换成他原来所代表的含义,并使用 Web Server自己的URL编码字符集(IIS6 中文版是GBK,Apache 2.2是UTF-8)传送给应用...

    PHP json_encode中文乱码问题的解决办法

    下面的PHP代码可以解决以下问题:1.json_encode UTF8码中文后的字符串不可阅读2.json_encode 多级数组中文乱码问题3.json_encode 数组中包含换行时错误问题4.json_... } return addcslashes(urldecode(json_encod

    php中json_encode中文编码问题分析

    我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文! 测试代码如下: 复制代码 代码...

    短信开发PHP演示文档

    $url.= "hash=ef38ed03c66603421ba24c52e20efcb7&";//用户名HASH值,到http://www.htkdx.com/api/doc获取 $url.= "encode=$encode&"; $url.= "smstype=$smstype&"; $url.= "mobile=".urlencode($mobile)."&content;=...

    回头客短信营销系统软件

    $url.= "hash=ef38ed03c66603421ba24c52e20efcb7&";//用户名HASH值,到http://www.htkdx.com/api/doc获取 $url.= "encode=$encode&"; $url.= "smstype=$smstype&"; $url.= "mobile=".urlencode($mobile)."&content;=...

    PHP学习散记_编码(json_encode 中文不显示)

    在网上找到一种解决方法: 复制代码 代码如下: &lt;?... echo json_encode ( $data ); echo “ ”; $newData = array (); foreach ( $data as $key =&gt; $value ) { $newData [$key] = urlencode ... } echo urldecode

    基于php解决json_encode中文UNICODE转码问题

    用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如果想汉字不进行转码,...2.把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码

Global site tag (gtag.js) - Google Analytics