Как отобразить кириллицу в названии файла

85
11 мая 2021, 22:20

Сохраняю файл из директории в браузере, но почему-то в место кириллические символы заменяются на символ _.

Пример:

 String fileName = "ПЛ5.111.008 СБ [1].tif".replace(' ', '-');

Сохраняется файл вот так - __5.111.008-__-[1].tif

Пример Кода:

 response.setContentType("text/html");
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    response.setContentType("application/download");
    String fileName = "ПЛ5.111.008 СБ [1].tif".replace(' ', '-');
    response.setHeader("Content-Disposition",
            "attachment;filename=" + fileName);

    String test = request.getParameter("test");
    simpleDLL sdll = simpleDLL.INSTANCE;
    File file = new File("D:/file/ПЛ5.111.008 СБ/ПЛ5.111.008 СБ [1].tif");
    FileInputStream fileIn = new FileInputStream(file);
    ServletOutputStream out = response.getOutputStream();
    byte[] outputByte = new byte[4096];//copy binary contect to output stream
    while (fileIn.read(outputByte, 0, 4096) != -1) {
        out.write(outputByte, 0, 4096);
    }
    fileIn.close();
    out.flush();
    out.close();          
    request.setAttribute("test", test);
    RequestDispatcher view = request.getRequestDispatcher("/index.jsp");
Answer 1

Можно глобально установить кодировку

try {
  System.setProperty("file.encoding", "UTF-8");
  Field charset = Charset.class.getDeclaredField("defaultCharset");
  charset.setAccessible(true);
  charset.set(null, null);
} catch (NoSuchFieldException e) {
  log.warn("defaultCharset property does not exist", e);
} catch (IllegalAccessException e) {
  log.warn("charset.set(null, null): Illegal access exception", e);
}
Answer 2

Нашел способ это поправить:

String fileName = "ПЛ5.111.008 СБ [1].tif";        
    String URLEncodedFileName = URLEncoder.encode(fileName, "UTF-8");
    String ResultFileName = URLEncodedFileName.replace('+', ' ');

    response.setHeader("Content-Disposition",
            "attachment;filename=" + ResultFileName);
READ ALSO
Подставление значений из GET запроса в input. JS

Подставление значений из GET запроса в input. JS

Есть HTML форма с фильтрами, после отправки GET запроса или после обновления страницы все значения input'ов слетаютКак с помощью js/jquery вытянуть...

114
tampermonkey запуск скрипта через контекстное меню

tampermonkey запуск скрипта через контекстное меню

Как запустить скрипт нажав правую кнопку мыши и выбрав нужный скрипт? Использую этот параметр:

127
На сколько это правильно? (DOM)

На сколько это правильно? (DOM)

Только начал учить Js, сейчас прохожу блок по DOMНаписал абстрактную регистрацию пользователя с проверкой на совпадение паролей, на сколько...

89
Увеличение значения объекта

Увеличение значения объекта

Есть три кнопкиПо нажатию на первую кнопку запускается первый секундомер, по нажатию на вторую останавливается первый и запускается второй...

117