我们在调用某些GET请求的时候需要调用参数,当我们通过编程来实现的时候会碰到一些尴尬情况,我们的调用参数没有被编码。有鉴于此,我在做某个项目的时候突发一个奇怪的想法,就是自己编码自己解码。当时想到就做,就这样我就写了简单的函数来实现编解码,自己对特殊字符和中文进行编解码。现在这些函数应用在SiteView ECC 7.0中,具体实现代码如下,抛砖引玉希望能给各位以启迪吧。
/
// 函数 url_Encode
// 说明 url编码
// 参数 待编码字符串
// 返回值 编码后字符串
/
string url_Encode(const char* pszValue)
{
string szEnUrl ("");
int nSize = static_cast<int>(strlen(pszValue) * 3) + 1;
char *chEncode = new char[nSize];
const char *pPos = pszValue;
if(chEncode)
{
memset(chEncode, 0, nSize);
char *pTmp = chEncode;
while(*pPos != '/0')
{
if(*pPos >= 48 && *pPos <= 57) // 0-9
{
*pTmp = *pPos;
pTmp ++;
}
else if(*pPos >= 65 && *pPos <= 90) // A-Z
{
*pTmp = *pPos;
pTmp ++;
}
else if(*pPos >= 97 && *pPos <= 122) // a-z
{
*pTmp = *pPos;
pTmp ++;
}
else if(*pPos == '.') // .
{
*pTmp = *pPos;
pTmp ++;
}
else if(*pPos >=0 && *pPos <= 255) // 其他ASICC字符
{
*pTmp = '%';
pTmp++;
sprintf(pTmp, "%x", *pPos);
pTmp += 2;
}
pPos++;
}
szEnUrl = chEncode;
delete []chEncode;
}
return szEnUrl;
}
看到此处,相信各位也就能知道我是如何实现解码的了。