ASP Response.Redirect не выполняет URLEncode + Sign

До IIS 5.0 Response.Redirect не кодировал предоставленную вами строку. Вы сами отвечали за URLEncode строки.

В IIS 4.0 мы использовали

Response.Redirect Server.URLEncode("Page,One.asp")

С IIS 5.0 мы начали просто использовать

Response.Redirect("Page,One.asp")

Таким образом, новая функция Response.Redirect URLEncodes ваша строка, и другого варианта нет.

Есть только одна проблема. Я не могу передать знак "+" в строках. Когда выполняется Response.Redirect("sum=1+3"), вы ожидаете, что он закодирует все небуквенно-цифровые символы, но знак «+» превращается в символ пробела на принимающей странице.

При выполнении Response.Redirect(“sum=1%2B3”) будет получено "404 Not Found", так как "sum%3D1%25B23" не существует на сервере, так как %2B кодируется дважды.

Я хочу, чтобы «+» кодировался как %2B, чтобы принимающая страница понимала, что это на самом деле часть некоторого текста, и отображала его.

Позвольте мне привести вам пример: когда вы набираете http://translate.google.com/#en|tr|1%2B2 в своем браузере и нажимаете ввод, вы увидите, что Google принимает %2B и декодирует его как + в текстовом поле.

Ни один

Response.Redirect("http://translate.google.com/#en|tr|1%2B2")

or

Response.Redirect("http://translate.google.com/#en|tr|1+2")

делает тот же эффект, что и в примере, который я привел. Я просто хочу перенаправить на эту страницу.

Существует и другой способ, например, сначала закодировать строку, а затем перенаправить с помощью Response.Redirect unescape("Page%2COne%2Easp"), но функции escape и unescape поддерживают некоторую часть UTF-8 и ASCII (0-127), но не поддерживают высокие символы ANSI (128-255), особенно с европейским акцентом. символы.

Какие-либо предложения?


person user1358065    schedule 22.01.2011    source источник


Ответы (1)


Таким образом, новая функция Response.Redirect URLEncodes ваша строка, и другого варианта нет.

что значит другого выхода нет?

server.urlencode все еще существует

person Dee    schedule 31.01.2011
comment
благодаря. я нашел способ к этому. ты прав! server.urlencode все еще работает, но когда вы хотите перенаправить с помощью response.redirect, он кодируется или нет, он снова кодирует его. так что теперь я использую response.addheader(Location,server.url encode(string)) - person user1358065; 03.02.2011
comment
Я использую перенаправление javascript, как здесь: stackoverflow.com/questions/503093/ - person Portekoi; 17.06.2015