您的位置:首页 > 理论基础 > 计算机网络

[HTTP]_[C/C++]_[解析URL的转义字符百分比字符串]

2013-11-11 13:58 2026 查看
场景:

1.有时候获取一个超链接时,或者一个图片src时,里面的地址带有%XX,这样如果当成文件路径处理会不识别。所以要把转义字符解码。

2.它其实就是ASCII码的十六进制表示。

以下是stackoverflow提供的一个实现,很久以前找的,找不到原文了。添加了一些单元测试.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <windows.h>
#include <assert.h>

std::string UrlDecode(std::string &SRC)
{
std::string ret;
char ch;
int ii;
for (size_t i=0; i<SRC.length(); i++) {
if (int(SRC[i])==37) {
sscanf(SRC.substr(i+1,2).c_str(), "%x", &ii);
ch=static_cast<char>(ii);
ret+=ch;
i=i+2;
} else {
ret+=SRC[i];
}
}
return (ret);
}

int main(int argc, char *argv[])
{
printf("Hello, world\n");
std::string file_path = "C:\\Program%20File\\";

std::string str = UrlDecode(file_path);
assert(!strcmp(str.c_str(),"C:\\Program File\\"));

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: