UrlEncoding и Response.Redirect с% 20 и + - PullRequest
2 голосов
/ 15 марта 2012

Я пытаюсь выполнить следующую задачу в asp.net

Response.Redirect("/?confim&name=John%20Smith");

Когда этот код выполняется, URL, который я вижу в адресе браузера «www.mysite.com/?confirm&name=John+Smith".

Но то, что я хочу, это "www.mysite.com/?confirm&name=John%20Smith".

Я знаю, что% 20 и + вместо пробела, и я знаю, что, вероятно, было бы лучше иметь имя, например, "John_Smith". Но я интегрируюсь со сторонним программным обеспечением и т. Д. Со старыми данными и по старым причинам не может измениться.

Я пробовал это на другом ванильном сайте, и у меня не возникает проблемы, поэтому я не могу не задаться вопросом, является ли это глобальная настройка или что-то, чего мне не хватает или о котором я не слышал. Любая помощь будет принята с благодарностью

Спасибо

Будет

1 Ответ

0 голосов
/ 15 марта 2012

Не думаю, что я понимаю, что насчет кодировки, которая вам не нравится ---

Знак + является зарезервированным символом. Так что даже если вы замените пробелы на +, + будет заменен кодом%. И "" в любом случае следует заменить на% 20, а если это не так, вы можете использовать метод HttpServerUtility.UrlEncode. И если это не сработает, попробуйте этот хак:

string someUrlEncodedMyWay = "www.mysite.com/?confirm&name=John%20Smith";
Response.Write("<script type=\"text/javascript\">");

Response.Write("window.location = \"" + someUrlEncodedMyWay + "\"");

Response.Write("</script>");

И это позволит вам указать браузеру использовать фанк-URL, но если браузер этого не хочет, вы можете получить другую кодировку пробелов и специальных символов.

...