Страница: 1 |
Вопрос: Проблема с русскими именами файлов | Добавлено: 06.08.08 12:12 |
Автор вопроса: ![]() |
У меня возникла вот такая интересная проблема:
Проблема с руским именем файла. Я написал web-приложение на Visual Basic 6.0. Использую при этом ASP (не ASP.NET). В меня есть режим для загрузки файлов. Когда кликаеш в IE на файле я заталкиваю в header -"Content-Disposition=attachment;filename=..." Всплывает диалоговое окошко IE с выбором сохранить ли этот файл или сразу открыть. Имя файла при этом в диалоговом окне НОРМАЛЬНОЕ, нормальное и при выборе сохранить. Но если выбрать "Открыть" то файл загружается в временную папку и отрывается с НЕ НОРМАЛЬНЫМ именем в котором куча крокодилчиков вместо руских символов. Делаю я это так: ------------------------------------------- Response.Clear s = Server.URLPathEncode(sfileName) Response.AddHeader "Content-Disposition", " attachment;filename=""" & s & """" Response.ContentType = sContentType Response.BinaryWrite sBinaryData ------------------------------------------- это упрощенный вавриант На Opera и Firefox - все Ок, а на IE вот такая загвоздка.... Или же IE намеренно сохраняет файлы в временной папке с именами в URL виде??? Или как то нужно по особому для IE задавать кодировку?? Помогите или подскажите может я что-то делаю не так... |
Ответы | Всего ответов: 8 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 06.08.08 13:11 |
Вывод? Убрать IE из стандартной поставки винды и воткнуть туда оперу ![]() ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #2 | Добавлено: 06.08.08 13:22 |
Да я сам на опере сижу.
А беда в следуещем: Выбираем кнопку "открыть" (моем случае этот файл "Версия.doc" ![]() ![]() ![]() И еще дело в том что большинство народа сидит на IE... На опере и фаерфоксе все отлично работает ![]() |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 06.08.08 13:49 |
Ну что ж тут поделаешь... Не знаю. Видимо, тут ничем не помочь. Разве что патч для осла написать ![]() |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #4 | Добавлено: 06.08.08 19:44 |
Ну посмотри http-снифером что там происходит.
Могу поспорить, проблема с кодировкой. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #5 | Добавлено: 07.08.08 11:38 |
я на http debug pro смотрел уже давно и вот например что я получаю в response для IE
------------------------------------ HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Thu, 07 Aug 2008 07:04:07 GMT Content-Disposition: attachment;filename="%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%90%D0%B2%D1%82%D0%BE%20%D0%BE%D1%80%D0%B8%D0%B3%D0%B8%D0%BD%D0%B0.doc" Content-Length: 242176 Content-Type: application/msword; Charset=utf-8 Expires: Thu, 07 Aug 2008 07:04:08 GMT Cache-control: private и дальше сам файл ------------------------------------------------------- а это для Opera на которой все окей: --------------------------------------- HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Thu, 07 Aug 2008 07:04:37 GMT Content-Disposition: attachment;filename*=utf-8''%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%90%D0%B2%D1%82%D0%BE%20%D0%BE%D1%80%D0%B8%D0%B3%D0%B8%D0%BD%D0%B0%D0%BB.doc Content-Length: 242176 Content-Type: application/msword; Charset=utf-8 Expires: Thu, 07 Aug 2008 07:04:37 GMT Cache-control: private и дальше сам файл --------------------------------------- оба получают в крокозябликах как и должно быть, но опера извекла нужное русское имя и оно уже всегда остается таким, ie извлекает нормальное русское имя в диалоговом окоше там где предлагается открыть или сохранить, но если выбрать открыть - то имя уже становится такое как в response header, а не русское ![]() Что с этим можна делать??? С оперой все просто: пишу "filename*=utf-8''...", чем говорю что это имя по любом должно быть в utf-8... А можна например что то такое же сделать с IE?? Вся проблема в том, что IE почему-то сохраняет файл во временной папкес именем в URL кодировке и потом файл, соответственно, открывается не с руским именем, а с именем в URL кодировке. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 07.08.08 12:15 |
А можна например что то такое же сделать с IE??
Что ты можешь сделать с ослом, вот скажи? И пользователям потом будешь писать, мол, откройте осла, потом командную строку, напишите там "SET IE_CHARSET = utf-8; UPDATE IE CONFIG;"? Нафиг оно юзерам не надо. Ничего тут не поделаешь, видимо. Переводи имена в транслит на сервере. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 3 Ответов: 3 |
Профиль | Цитата | #7 | Добавлено: 07.08.08 20:57 |
"%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%90%D0%B2%D1%82%D0%BE%20%D0%BE%D1%80%D0%B8%D0%B3%D0%B8%D0%BD%D0%B0.doc"
Это кодировка "quoted-printable" если интересует как из нее декодировать то у меня есть пример на C#.Net |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #8 | Добавлено: 08.08.08 10:53 |
Это кодировка "quoted-printable" если интересует как из нее декодировать то у меня есть пример на C#.Net
Я использую Server.URLPathEncode в Visual Basic 6.0, это так и должно передаватся, посколько в меня русское имя файла, а русские символы как раз таки и должны передаватся в кодированом виде. Наверно вы не совсем правильно поняли "%D0%92%D0%Bjavascript:document.messageeditor.submit();5%D1%80%D1%81%D0%B8%D1%8F%20%D0%90%D0%B2%D1%82%D0%BE%20%D0%BE%D1%80%D0%B8%D0%B3%D0%B8%D0%BD%D0%B0.doc"
преобразовать вот такую строку в нормальное имя это задача браузера, с которой IE справляется в диалоговом окне, но при нажатии "открыть" он должен сохранить этот файл в своей временной папке, а дальше вызвать этот файл на открытие в проге которае открывает файлы такого розширения. IE так и делает но при этом он теряет русское имя и запихивает во временную папку файл с именем "%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%90%D0%B2%D1%82%D0%BE%20%D0%BE%D1%80%D0%B8%D0%B3%D0%B8%D0%BD%D0%B0.doc", а остальные браузеры этого не делают, тоесть запихивют в свою временную папку файл с русским именем и потом он открывается тоже с руским именем, а не как после IE с страшным и длинным именем. Так вот вопрос собственно в следуещем: Должен ли IE так делать??? Или же это его недоработка, глюк, баг или еще что-то??? Или же для IE как-то по особому надо задавать кодировку чтоб он такого не делал?? |
Страница: 1 |
|