В HttpUtility.ParseQueryString отсутствуют некоторые символы

Я пытаюсь извлечь электронное письмо с + специальный символ, но по какой-то причине ParseQueryString пропускает:

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

1 ответ

В +символ в URL-адресе интерпретируется как пробел. Чтобы исправить это, вам нужно сначала URL-адрес закодировать адрес электронной почты. Например:

      var urlEncodedEmail = System.Web.HttpUtility.UrlEncode("mypersonalemail15+1@gmail.com");
var uri = new System.Uri($"callback://gmailauth/#email={urlEncodedEmail}");
var parsed = System.Web.HttpUtility.ParseQueryString(uri.Fragment);
var email = parsed["#email"];
Другие вопросы по тегам