Русские символы в URL при применении response.redirect когда Server.URLEncode дает противоположный результат.
Столкнулся с проблемой, что когда метод response.redirect выдает русские символы в URL браузер (IE) их отрезает. Везде предлагается использовать Server.URLEncode для корректной кодировки...
Однако есть одно но. Если редирект идет на файл с русскими символами в имени после URLEncode файл на сервере не находится (если без URLEncode - то файл скачивается, только русские буквы из имени убираются - в IE, а в Opere заменяются на %ASCII - вроде не смертельно, но очень некрасиво)... Такая же проблема есть и при передаче параметров с русскими символами страницам.
Поиск решения не дал результат. Сделал свое решение, которое меня вполне устраивает.
Суть заключается в редиректе посредством JS на стророне клиента. Для этого вместо response.redirect скрипт должен выдать клиенту страничку, которая уже перенаправит клиентский браузер в нужное место.
То есть, вместо response.redirect пишем такой код:
|
%>
<html>
<head>
<title>Перенаправление</title>
<meta http-equiv=REFRESH CONTENT=″10; URL=<%= RedirectURL%>″>
</head>
<SCRIPT LANGUAGE=javascript>
<!--
document.location.href=″=<%= RedirectURL%>″;
//-->
</SCRIPT>
</head>
<body>
<p align=center>Если загрузка не началась автоматически, нажмите кнопку ″Загрузить″</p>
<CENTER>
<FORM action=″=<%= RedirectURL%>″>
<Input Type=″submit″ VALUE=″Загрузить″ Class=′button′>
</FORM>
</CENTER>
</html>
<%
|
(в данном случае мне нужна была загрузка файла с русскими симвовали в имени - отсюда такое содержание текста).
Работает корректно и в IE и в Opera.