How to decode URL-encoded and URL query strings in VB.NET

2 Answers

0 votes
Imports System
Imports System.Net

Module UrlDecoderApp

    ''' <summary>
    ''' Decodes a URL-encoded string or query component.
    ''' Handles both percent-encoded characters (%xx) and '+' to space conversion.
    ''' </summary>
    ''' <param name="encodedStr">The URL-encoded string.</param>
    ''' <returns>The fully decoded string.</returns>
    Function DecodeUrlString(encodedStr As String) As String
        Try
            ' WebUtility.UrlDecode handles %xx escapes and '+' to space conversion
            Return WebUtility.UrlDecode(encodedStr)
        Catch ex As Exception
            Console.WriteLine($"Decoding error: {ex.Message}")
            Return encodedStr
        End Try
    End Function

    Sub Main()
        ' Example 1: Standard URL encoding with special characters
        Dim sample1 As String = "Hello%20World%21%20VB.NET%20%26%20Web"
        Console.WriteLine("--- Example 1: Standard URL Encoding ---")
        Console.WriteLine($"Encoded: {sample1}")
        Console.WriteLine($"Decoded: {DecodeUrlString(sample1)}")

        ' Example 2: Form query string fragment encoding (spaces represented as '+')
        Dim sample2 As String = "Jane+Doe+from+New+York"
		Console.WriteLine(Environment.NewLine & "--- Example 2: Form Fragment Encoding ---")
        Console.WriteLine($"Encoded: {sample2}")
        Console.WriteLine($"Decoded: {DecodeUrlString(sample2)}")
    End Sub

End Module
														
														
' run:
'
' --- Example 1: Standard URL Encoding ---
' Encoded: Hello%20World%21%20VB.NET%20%26%20Web
' Decoded: Hello World! VB.NET & Web
' 
' --- Example 2: Form Fragment Encoding ---
' Encoded: Jane+Doe+from+New+York
' Decoded: Jane Doe from New York
'

 



answered 1 hour ago by avibootz
0 votes
Imports System
Imports System.Collections.Specialized
Imports System.Web

Module QueryStringParserApp

    ''' <summary>
    ''' Parses and decodes a complete URL query string into a NameValueCollection.
    ''' </summary>
    ''' <param name="queryString">The URL query string (with or without leading '?').</param>
    ''' <returns>A NameValueCollection containing decoded keys and values.</returns>
    Function ParseAndDecodeQuery(queryString As String) As NameValueCollection
        ' Remove leading '?' if present
        If Not String.IsNullOrEmpty(queryString) AndAlso queryString.StartsWith("?") Then
            queryString = queryString.Substring(1)
        End If

        ' ParseQueryString automatically handles decoding and multi-value parameters
        Return HttpUtility.ParseQueryString(queryString)
    End Function

    Sub Main()
        Dim fullQuery As String = "search=vb.net+tutorial&category=programming&tag=beginner&tag=desktop"

        Console.WriteLine("--- Full Query String Parsing ---")
        Console.WriteLine($"Original Query: {fullQuery}")

        Dim params As NameValueCollection = ParseAndDecodeQuery(fullQuery)

        Console.WriteLine("Decoded Parameters Result:")
        For Each key As String In params.AllKeys
            ' GetValues handles cases where a key appears multiple times (e.g., multiple 'tag' parameters)
            Dim values As String() = params.GetValues(key)
            Console.WriteLine($"  {key} -> [{String.Join(", ", values)}]")
        Next
    End Sub

End Module											


' run:
'
' --- Full Query String Parsing ---
' Original Query: search=vb.net+tutorial&category=programming&tag=beginner&tag=desktop
' Decoded Parameters Result:
'   search -> [vb.net tutorial]
'   category -> [programming]
'   tag -> [beginner, desktop]
'

 



answered 1 hour ago by avibootz
...