Procedure.s url_encode( *szStr.CHARACTER ) ;!Author: Gustavo J. Fiorenza (aim: gushhfx) ;!Date: 27/03/2008 - Rev: 2 ;!Compliance: rfc3986 If *szStr Define.s szReturnString Repeat Select *szStr\c Case 'A' To 'Z', 'a' To 'z', '0' To '9', '-', '.', '_', '~' ; unreserved szReturnString + Chr(*szStr\c) Case '!', '$', '&', 39, '(', ')', '*', '+', ',', ';', '=' ; reserved -> sub-delims szReturnString + Chr(*szStr\c) Case ':', '/', '?', '#', '[', ']', '@', '%' ; reserved -> gen-delims (last char placed to avoid recursive percent-encoding) szReturnString + Chr(*szStr\c) Default ; percent-encoding szReturnString + ("%" + Hex(*szStr\c)) ;-Note: test/review this method in the future. EndSelect *szStr + SizeOf(CHARACTER) Until *szStr\c = #Null ProcedureReturn szReturnString EndIf EndProcedure