Esempio n. 1
0
/**
 * Unescape a URL escaped string
 * @param URL   URL escaped string
 * @return Orignal string
 */
string unescapeURL(const string &URL) {
  string result = "";
  for (unsigned int i = 0; i < URL.size(); i++) {
    char c = URL[i];
    if (c != '%') result += c;
    else {
      char c1 = URL[++i];
      char c0 = URL[++i];
      int num = 0;
      num += hexChar2dec(c1) * 16 + hexChar2dec(c0);
      result += char(num);
    }
  }
  return result;
}
Esempio n. 2
0
void urlDecode( const CHAR *pBuffer, INT32 bufferSize,
                CHAR **pOut, INT32 outSize )
{
   CHAR *pTemp = *pOut ;
   CHAR result = 0 ;
   CHAR c1 = 0 ;
   CHAR c2 = 0 ;
   INT32 c3 = 0 ;
   INT32 i = 0 ;
   for( ; i < bufferSize && outSize > 0; ++i )
   {
      result = pBuffer[i] ;
      if( '+' == result )
      {
         *pTemp = ' ' ;
         --outSize ;
      }
      else if( '%' == result )
      {
         if ( i + 2 >= bufferSize )
         {
            break ;
         }
         ++i ;
         c1 = pBuffer[i] ;
         ++i ;
         c2 = pBuffer[i] ;
         if( c1 == -1 || c2 == -1 )
         {
            continue ;
         }
         c3 = hexChar2dec( c1 ) * 16 + hexChar2dec( c2 ) ;
         result = (CHAR)c3 ;
         *pTemp = result ;
         --outSize ;
      }
      else
      {
         *pTemp = result ;
         --outSize ;
      }
      ++pTemp ;
   }
}