До того, как 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), особенно символы с европейским акцентом.
Есть предложения?