Giulio, using NthField in a loop like that is slow and should generally be avoided. Instead, use Split.
Here is my version. (Yes, you could also do this with regular expressions.)
dim address as string = url.Nthfield( "?", 1 )
dim rest as string = url.Mid( address.Len + 2 ) // Get the rest
dim params as new Dictionary
dim segments() as string = rest.Split( "&" )
for each segment as string in segments
dim param as string = segment.NthField( "=", 1 )
dim value as string = segment.Mid( param.Len + 2 )
value = DecodeURLComponent( value )
params.Value( param ) = value
next