原创:VC下实现UrlEncode(javascript之escape)功能(VC 为 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;
}