Я пишу простой сервлет загрузки файлов, и я не могу получить правильные имена файлов. Пробовал URLEncoding и MimeEncoding имя файла, как видно из существующих ответов, но ни один из них не работал.
Объект fileData в следующем фрагменте содержит тип mime, содержимое байта [] и имя файла, для которого требуется хотя бы кодировка ISO-8859-2, ISO-8859-1 недостаточно.
Как я могу заставить мой браузер правильно отображать загруженное имя файла?
Вот пример имени файла: árvíztűrőtükörfúrógép.xls, и это приводит к: árvíztqrptükörfúrógép.xls
protected void renderMergedOutputModel(Map model, HttpServletRequest req, HttpServletResponse res) throws Exception {
RateDocument fileData = (RateDocument) model.get("command.retval");
OutputStream out = res.getOutputStream();
if(fileData != null) {
res.setContentType(fileData.getMime());
String enc = "utf-8"; //tried also: ISO-8859-2
String encodedFileName = fileData.getName();
// also tried URLencoding and mime encoding this filename without success
res.setCharacterEncoding(enc); //tried with and without this
res.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName);
res.setContentLength(fileData.getBody().length);
out.write(fileData.getBody());
} else {
res.setContentType("text/html");
out.write("<html><head></head><body>Error downloading file</body></html>"
.getBytes(res.getCharacterEncoding()));
}
out.flush();
}