В 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"];