ASP Response.Redirect не использует URLEncode "+" - PullRequest
0 голосов
/ 22 января 2011

До того, как 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.Rirectirect Функция URLE кодирует вашу строку, и нет другой опции.

Есть только одна проблема.Я не могу передать знак «+» в строках.Когда выполняется 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")

или

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), особенно символы с европейским акцентом.

Есть предложения?

1 Ответ

0 голосов
/ 31 января 2011

Итак, новая функция Response.Redirect URLE кодирует вашу строку, и другой опции нет.

что вы имеете в виду, что другой опции нет?

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

...