Как установить локализованные имена файлов в java.Currently каждый раз, когда я нажимаю на локализованный файл, имеющий имя файла, отличного от ascii, в моем приложении, открывается диалоговое окно сохранения Windows, но оно не отображает имя файла правильно, если charset - это нечто большее, чем ISO-88859-1.Java локализованные имена файлов
Это мой код, который сохраняет файл.
InputStream inputStream = null;
try {
response.resetBuffer();
response.setContentType(fileStream.getContentType());
response.setContentLength((int) fileStream.getContentLength());
response.addHeader("Content-Disposition",
"attachment;filename=\"" + fileName + "\"");
ServletOutputStream stream = response.getOutputStream();
byte[] buffer = new byte[1024];
int read = 0;
int total = 0;
inputStream = fileStream.getInputStream();
while ((read = inputStream.read(buffer)) > 0) {
stream.write(buffer, 0, read);
total += read;
}
response.flushBuffer();
} finally {
if (inputStream != null) {
inputStream.close();
}
}
Было бы очень полезно, если бы кто-то мог поделиться своими идеями о том, как решить эту проблему. Спасибо заранее.
DKarp, Этот код был действительно полезен. Теперь я могу получить желаемые результаты во всех браузерах, кроме IE. С IE при загрузке файла он кодирует имя файла для отображения в надлежащем формате, но добавляет к нему весь URL-адрес, и когда я пытаюсь загрузить файл .xls, он отображает окно выполнения загрузки с предупреждением об этом, в котором говорится: «Интернет Проводник не смог открыть этот сайт. Сайт либо недоступен, либо не найден. Я бы снова хотел, чтобы ты указал мне в правильном направлении. Большое спасибо за вашу помощь. – Hitatichi
Какой код вы используете для настройки заголовка 'Content-Disposition' для IE? Я думаю, что некоторые версии IE могут плохо справляться с складыванием заголовков, поэтому не ставьте лишнюю строку в заголовке ... – dkarp
Я использовал URLEncoder для IE точно так, как вы указали в ответе. response.addHeader («Content-Disposition», «attachment; filename =» + URLEncoder.encode (имя файла, «utf-8»)); – Hitatichi