您的位置:首页 > Web前端 > JavaScript

原创:VC下实现UrlEncode(javascript之escape)功能(VC 为 UNICODE编码)

2011-08-23 21:13 309 查看
VC 为 UNICODE编码,没有考虑非UNICODE编码!

char hexs[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
CString URLEncode(CString sIn)
{
CString sOut;
int nLen = sIn.GetLength();
PBYTE pInBuf = (PBYTE)sIn.GetBuffer(0);
BYTE* pOutBuf=new BYTE[nLen*7];
memset(pOutBuf,0,nLen*7);
int n=0;
BYTE A,B;
for(int i=0;i<nLen;i++)
{ BYTE a = pInBuf[i*2];
BYTE b = pInBuf[i*2+1];
if(b>0)
{

pOutBuf[n++]='%';
pOutBuf[n++]='u';

A=b&0xf;
B=(b&0xf0)>>4;
pOutBuf[n++] = hexs[B];
pOutBuf[n++] = hexs[A];

A=a&0xf;
B=(a&0xf0)>>4;
pOutBuf[n++] = hexs[B];
pOutBuf[n++] = hexs[A];
}
else if(a<'*'||a==','||(a>'9'&&a<'@')||(a>'Z'&&a<'_')||a=='`'||a>'z')
{
pOutBuf[n++]='%';

A=a&0xf;
B=(a&0xf0)>>4;

pOutBuf[n++] = hexs[B];
pOutBuf[n++] = hexs[A];
}
else
{
pOutBuf[n++]=a;
}
}

sOut=CString(pOutBuf);
sIn.ReleaseBuffer();
delete[] pOutBuf;
return sOut;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: