Специальные символы имени файла загрузки сервлета Java

Я пишу простой сервлет для загрузки файлов и могу ' t получить правильные имена файлов. Пробовали URLEncoding и MimeEncoding имя файла, как видно из существующих ответов, но ни один из них не работал.

Объект fileData в следующем фрагменте содержит тип mime, содержимое byte [] и имя файла, для которого требуется как минимум ISO-8859- 2 кодировки ISO-8859-1 недостаточно.

Как мне заставить мой браузер правильно отображать загруженное имя файла?

Вот пример имени файла: árvíztűrőtükörfúrógép.xls, и в результате получается: árvíztqrptükörfúrógép.

  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();
  }
10
задан jabal 16 March 2011 в 13:08
поделиться