C/C++.【转】解析URL的转义字符百分比(%)字符串

1、来自:[HTTP]_[C_C++]_[解析URL的转义字符百分比字符串] - 猪一戒 - 博客园.html(http://www.cnblogs.com/zhuyijie/p/6465303.html

2、使用环境:我在 使用 libxml2的时候,遇到 文件编码不对,它在报错输出文件名的时候 如果文件名中有中文 则使用的就是URL的转义字符串(带%),肉眼看不出来是什么文字,转以后 才看得懂...

#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;
}

 

3、

4、

5、

 

posted @ 2018-12-06 09:35  CppSkill  阅读(2084)  评论(0编辑  收藏  举报