C++实现urlencode

本文详细介绍了如何使用C++实现URL编码及解码功能,包括字符转换、特殊字符处理等,并通过实例展示了如何使用PHP的url_decode()进行解码。文章还特别提到了char*与String的区别,以及在编码过程中的注意事项。

C++ 实现 urlencode,可以使用 php 的 url_decode() 解码。

注意 char * 与 String 的区别在  “\0”

inline BYTE toHex(const BYTE &x)
{
	return x > 9 ? x + 55: x + 48;
}

CString CMyTools::urlEncoding( unsigned char * sIn, ULONGLONG len )
{
	 CString sOut;
	 for( ULONGLONG ix = 0; ix < len; ix++ )
     {
         BYTE buf[4];
         memset( buf, 0, 4 );
         if( isalnum( (BYTE)sIn[ix] ) )
         {
             buf[0] = sIn[ix];
         }
         else if ( isspace( (BYTE)sIn[ix] ) )
         {
             buf[0] = '+';
         }
         else
         {
             buf[0] = '%';
             buf[1] = toHex( (BYTE)sIn[ix] >> 4 );
             buf[2] = toHex( (BYTE)sIn[ix] % 16);
         }
         sOut += (char *)buf;
     }
     return sOut;
}

CString CMyTools::urlEncoding( CString sIn )
{
	 CString sOut;
	 for( int ix = 0; ix < sIn.GetLength(); ix++ )
     {
         BYTE buf[4];
         memset( buf, 0, 4 );
         if( isalnum( (BYTE)sIn[ix] ) )
         {
             buf[0] = sIn[ix];
         }
         else if ( isspace( (BYTE)sIn[ix] ) )
         {
             buf[0] = '+';
         }
         else
         {
             buf[0] = '%';
             buf[1] = toHex( (BYTE)sIn[ix] >> 4 );
             buf[2] = toHex( (BYTE)sIn[ix] % 16);
         }
         sOut += (char *)buf;
     }
     return sOut;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值