HttpUtility.ParseQueryString missing some characters

356 Views Asked by At

I'm trying to extract en email with the + special character but for some reason the ParseQueryString skips it:

namespace ParsingProblem
    {
        class Program
        {
            static void Main(string[] args)
            {        
                var uri = new System.Uri("callback://gmailauth/#[email protected]");
                var parsed = System.Web.HttpUtility.ParseQueryString(uri.Fragment);
                var email = parsed["#email"];
                // Email is: mypersonalemail15 [email protected] and it should be [email protected]
            }
        }
    }
1

There are 1 best solutions below

4
DavidG On

The + symbol in a URL is interpreted as a space character. To fix that, you need to URL encode the email address first. For example:

var urlEncodedEmail = System.Web.HttpUtility.UrlEncode("[email protected]");
var uri = new System.Uri($"callback://gmailauth/#email={urlEncodedEmail}");
var parsed = System.Web.HttpUtility.ParseQueryString(uri.Fragment);
var email = parsed["#email"];