原创: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;
}
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;
}
相关文章推荐
- JS基于FileSaver.js插件实现文件保存功能示例[原创]_javascript技巧_脚本之家
- .net里面实现javascript中的 escape 和 unescape 功能
- ASP中的Server.URLEncode在VC中的实现
- 功能强大的JavaScript引擎--SpiderMonkey与实现
- 【CSON原创】javascript实现3D房间
- JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
- JavaScript实现简单循环切换功能.
- 在Servlet中使用开源fileupload包实现文件上传功能 2010-08-05 23:38:25 标签:Servlet 文件上传 fileupload包 反编译 JD-GUI 原创作品,允许
- JavaScript中使用zDragDrop实现拖放功能
- javascript实现的一个带下拉框功能的文本框
- 用JavaScript实现字符串切分功能
- javascript实现自动添加文本框功能
- 用javascript实现jquery的document.ready功能的实现代码
- C#实现javascript的escape
- VC++实现android的Toast消息框的功能
- 关于复制粘贴剪切板功能VC中的实现!
- 基于JavaScript实现评论框展开和隐藏功能
- javascript 使用正则实现replaceall功能
- 在桌面程序里,使用Uri.EscapeDataString实现HttpUtility.UrlEncode