/** * 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; }
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 ; } }