PowerBASIC Forums
  Source Code
  decode urlencoded string

Post New Topic  Post A Reply
profile | register | preferences | faq | search

UBBFriend: Email This Page to Someone! next newest topic | next oldest topic
Author Topic:   decode urlencoded string
Alban Dominic Read
Member
posted May 04, 2003 10:17 AM     Click Here to See the Profile for Alban Dominic Read     Edit/Delete Message   Reply w/Quote
' original C function by Gerhard Smith.
'//does an inplace urlunencode
'INT CClientSocket::URLUnEncode(char *str) {
' char *p = str;
' char tab[32] = {0x00, 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
' 0x00,0x00,0x00,0x00,0x00,0x00,0x00,
' 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f };
' FOR ( ;*p != 0x00; p++) {
' IF (*p == '%' && *(p+1) != '%') {
' p++;
' *str = ((tab[(*p)-48] << 4) + tab[(*(p+1))-48]);
' p++;
' str++;
' continue;
' }
' *str = *p;
' str++;
' }
' *str = 0x00;
'RETURN(0);
'}
'
FUNCTION URLUnEncode( url AS STRING) AS STRING
LOCAL pbByte AS BYTE PTR
LOCAL pbUrl AS BYTE PTR
LOCAL pbTable AS BYTE PTR
LOCAL b1 AS BYTE
STATIC table AS STRING
LOCAL pszReturnStr AS ASCIIZ PTR
IF table="" THEN
table=table+CHR$(0)+CHR$(1)+CHR$(2)+CHR$(3)+CHR$(4)+CHR$(5)+CHR$(6)+CHR$(7)+CHR$(8)+CHR$(9)
table=table+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)
table=table+CHR$(10)+CHR$(11)+CHR$(12)+CHR$(13)+CHR$(14)+CHR$(15)+CHR$(16)
END IF
pbByte = STRPTR( url )
pbUrl = STRPTR( url )
pbTable = STRPTR(table)
DO WHILE @pbByte <> 0
IF @pbByte = ASC("%") AND NOT @pbByte[1] = ASC("%") THEN
INCR pbByte
b1 = @pbTable[@pbByte-48]
SHIFT LEFT b1,4
INCR pbByte
@pbUrl= @pbTable[@pbByte-48]+b1
INCR pbByte
INCR pbUrl
ITERATE DO
END IF
@pbUrl = @pbByte
INCR pbByte
INCR pbUrl
LOOP
@pbUrl = 0
pszReturnStr = STRPTR( url )
FUNCTION = @pszReturnStr
END FUNCTION

IP: Logged

All times are EasternTime (US)

next newest topic | next oldest topic

Administrative Options: Close Topic | Archive/Move | Delete Topic
Post New Topic  Post A Reply
Hop to:

Contact Us | PowerBASIC BASIC Compilers

Copyright © 1999-2005 PowerBASIC, Inc. All Rights Reserved.


Ultimate Bulletin Board 5.45c