Хотя это старый вопрос, он все еще актуален.Я нашел решение, которое работает для всех моих браузеров.
Смотрите мой пост в другой теме: Java сервлет скачать имя файла специальные символы
Короче говоря, браузеры ожидают, что значение в параметре filename
закодировано в собственной кодировке браузера (если для параметра filename
не задана другая кодировка).Родная кодировка браузера обычно - utf-8 (FF, Opera, Chrome), но для IE это win-1250.Следовательно, если мы поместим значение в filename
параметр, который кодируется utf-8 / win-1250 в соответствии с браузером пользователя, он должен работать.
Например, если у нас есть файл с именем omáčka.xml
,для FireFox, Opera и Chrome I ответ этот заголовок (закодированный в utf-8):
Content-Disposition: attachment; filename="omáčka.xml"
и для IE I ответ этот заголовок (закодированный в win-1250):
Content-Disposition: attachment; filename="omáèka.jpg"
Пример Java в моем посте , который упоминается выше.
Note # 1 (@dkarp) :
Помните об использовании URLEncoder.encode (), так как этот метод не кодирует входную строку в кодировку url.Этот метод кодирует входные строки в кодировку формы, которая очень похожа, но отличается в некоторых случаях - например, пробел '' кодируется как '+' вместо '% 20'.
Для правильного кодирования URL вамлучше использовать класс URI:
URI uri = new URI(null, null, "foo-ä-€.html", null);
System.out.println(uri.toASCIIString());