//变化UTF8为了中国
void UTF8ToGB(CString& szstr)
{
WCHAR* strSrc; TCHAR* szRes;
int i = MultiByteToWideChar(CP_UTF8, 0, szstr, -1, NULL, 0);
strSrc = new WCHAR[i + 1]; MultiByteToWideChar(CP_UTF8, 0, szstr, -1, strSrc, i);
i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new TCHAR[i + 1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);
szstr = szRes;
delete[]strSrc;
delete[]szRes;
} //解析URL
//输入:"/apps/%E6%BB%B4%E6%BB%B4%E6%89%93%E8%BD%A6.apk"
//输出: "/apps/嘀嘀打车.apk"
//方法: 分下面两步实现
//先调用DecodeUrl(),得到"/apps/婊存淮鎵撹溅.apk"
//再调用UTF8ToGB(),得到"/apps/嘀嘀打车.apk"
BOOL DecodeUrl(char *pURL, char *szBuff, int nBuffLen)
{
if (NULL == szBuff || NULL == pURL)
{
return FALSE;
}
if (nBuffLen == 0)
{
return FALSE;
} char *p = pURL; // 用来循环
int i = 0; // i用来控制szBuff数组 /*
暂时保存szBuff编码的数据
比如: %1A%2B%3C
*/
char t = '\0';
while (*p != '\0' && nBuffLen--)
{
if (*p == 0x25) // 0x25 = '%'
{
//下面是十六进制数中常出现的大写字母,小写字母,数字的推断
if (p[1] >= 'A' && p[1] <= 'Z') //大写字母
{
t = p[1] - 'A' + 10; //A = 10,下同
}
else if (p[1] >= 'a' && p[1] <= 'z') //小写字母
{
t = p[1] - 'a' + 10;
}
else if (p[1] >= '0' && p[1] <= '9') //数字
{
t = p[1] - '0';
}
t *= 16; // 将数放到十位上去 if (p[2] >= 'A' && p[2] <= 'Z') //大写字母
{
t += p[2] - 'A' + 10;
}
else if (p[2] >= 'a' && p[2] <= 'z') //小写字母
{
t += p[2] - 'a' + 10;
}
else if (p[2] >= '0' && p[2] <= '9') //数字
{
t += p[2] - '0';
} //到此合成了一个十六进制数
szBuff[i] = t; p += 3, i++;
}
else
{
//没有被url编码的数据
//'+'特殊处理.它相当于一个空格
if (*p != '+')
{
szBuff[i] = *p;
}
else
{
szBuff[i] = 0x20;
}
i++;
p++;
}
} szBuff[i] = '\0'; //终结者
return TRUE;
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

最新文章

  1. Thread 和 Runnable 的区别
  2. C语言程序设计进阶 第1周编程题
  3. spring mvc &lt;mvc:default-servlet-handler /&gt; 。
  4. C# EventWaitHandle
  5. cssHack
  6. Sql server analysis service 通过IIS连接时的最大连接数问题
  7. 洛谷P1983 车站分级
  8. 修改avd路径
  9. 【¥200代金券、iPad等您来拿】 阿里云9大产品免费公测#10月9日-11月6日#
  10. apache ab的安装步骤
  11. java 利用注解实现BaseDao 增删查改
  12. brent ozar的sqlserver dba训练课程翻译——第二章:手动恢复数据库
  13. Hoeffding连接到机器学习
  14. Catch Up 朋友小聚 - 地道英语 - BBC Learning English BBC英语教学 - 爱思英语网
  15. C++\virtual 虚函数、纯虚函数
  16. JUC (java.util.concurrent)
  17. B. Alyona and a tree
  18. 【python练习题】程序7
  19. Confluence 6 系统运行信息中的 JVM 内存使用情况
  20. mysql数据库导入与导出

热门文章

  1. [iOS]超详细Apache服务器的配置(10.10系统)
  2. 我常用的iphone开发学习网站[原创]
  3. 字符串分割函数Demo
  4. JS 控制 form是否提交表单
  5. 关于android的坑
  6. linux下面安装软件学习流程
  7. 用macports装了一份openssl
  8. DropDownList SelectedIndexChanged使用
  9. notify()、notifyAll()和wait()
  10. 详细解析BluetoothAdapter的详细api