2009-11-13 462 views

回答

0

您正在寻找'URLDecode'。它没有在MFC中实现 - 每个人都有自己的解决方案。试试这个:

std::string UriDecode(const std::string & sSrc) 
{ 
    // Note from RFC1630: "Sequences which start with a percent 
    // sign but are not followed by two hexadecimal characters 
    // (0-9, A-F) are reserved for future extension" 

    const unsigned char * pSrc = (const unsigned char *)sSrc.c_str(); 
    const int SRC_LEN = sSrc.length(); 
    const unsigned char * const SRC_END = pSrc + SRC_LEN; 
    // last decodable '%' 
    const unsigned char * const SRC_LAST_DEC = SRC_END - 2; 

    char * const pStart = new char[SRC_LEN]; 
    char * pEnd = pStart; 

    while (pSrc < SRC_LAST_DEC) 
    { 
     if (*pSrc == '%') 
     { 
     char dec1, dec2; 
     if (-1 != (dec1 = HEX2DEC[*(pSrc + 1)]) 
      && -1 != (dec2 = HEX2DEC[*(pSrc + 2)])) 
     { 
      *pEnd++ = (dec1 << 4) + dec2; 
      pSrc += 3; 
      continue; 
     } 
     } 

     *pEnd++ = *pSrc++; 
    } 

    // the last 2- chars 
    while (pSrc < SRC_END) 
     *pEnd++ = *pSrc++; 

    std::string sResult(pStart, pEnd); 
    delete [] pStart; 
    return sResult; 
} 
+0

它似乎回答了另一个问题?URL编码。 我只想将&amp;&,&#37转换为%等。它是html特殊字符 – user25749 2009-11-13 06:37:20