中文URL编码

对URL编码,由于网络标准只规定了只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号,其他字符只能编码后使用, 但是并没有具体的编码方法,只能交给浏览器处理,于是编码比较混乱,中文是转换为UTF-8后再编码还是转换为GBK呢?不同的浏览器处理可能不一样。但 是这次讨论的不是这些,而是怎么用C++对中文字符串转换为URL编码。

const char* URLEncode(const std::string& szToEncode)
{
    std::string scr = szToEncode;
    char Hex[] = "0123456789ABCDEF";
    static std::string dist;
    dist.clear();
    for(size_t i = 0; i < src.size(); i++)
    {
    unsigned char temp = src[i];
    if(isascii(temp))
    {
        if(temp == ' ')
        dist += "%20";
        else
        dist += temp;
    }
    else
    {
        unsigned char c = static_cast<unsigned char>(src[i])
        dist += '%';
        dist += Hex[c/16];
        dist += Hex[c%16];
    }
    }
    return dist.c_str();
}

相关链接:

http://www.w3school.com.cn/tags/html_ref_urlencode.html