Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115

Правильная кодировка при создание имя файла

06.05.2019, 12:53. Показов 3600. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня есть данные с моего сайта которые поступают ко мне в класс через контроллер и потом я из них формирую имя файла. Но каждый раз когда имя одного поля пишется не латиницей а русскими буквами в самой моей IDE Intellij Idea в папке пишется нормальное имя, а скачивается мне на компьютер не то совсем. Вот пример

Новые_without_delimeter.txt

______without_delimeter

Я не знаю как пофиксить это. Я пытался менять кодировку строки, на совершенно разные но оно все равно не работает.
Вот код формирования имя файла

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 @Override
    public Optional<String> getFileName(List<String> selectedCheckboxes, String delimeter, Status status) {
        StringBuilder fileName = new StringBuilder();
        if (status != null) {
                fileName.append(status.getName()).append("_");
        }
 
        for (String selectedCheckbox : selectedCheckboxes) {
            fileName.append(selectedCheckbox).append("_");
        }
 
        if (!Strings.isNullOrEmpty(delimeter)) {
            fileName.append(delimeter).append(".txt");
        } else {
            fileName.append("without_delimeter").append(".txt");
        }
 
        return Optional.of(fileName.toString());
    }
Вот через какой контроллер конечный проходит это поле

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@GetMapping(value = "/getClientsData")
    @PreAuthorize("hasAnyAuthority('OWNER', 'ADMIN', 'USER','MENTOR')")
    public ResponseEntity<InputStreamResource> getClientsData() {
        String path = "DownloadData" + File.separator;
        File file = new File(path + fileName);
 
        InputStreamResource resource = null;
        try {
            resource = new InputStreamResource(new FileInputStream(file));
        } catch (FileNotFoundException e) {
            logger.error("File not found! ", e);
        }
        return ResponseEntity.ok()
                .header(HttpHeaders.CONTENT_DISPOSITION,
                        "attachment;filename=" + file.getName())
                .contentType(MediaType.TEXT_PLAIN).contentLength(file.length())
                .body(resource);
    }
Кто что может посоветовать или может кто-то уже сталкивался с таким?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2019, 12:53
Ответы с готовыми решениями:

Не правильная кодировка при открытии файла под windows
Приветствую всех. Подскажите, пожалуйста, как решить вопрос с кодировкой? Возникла проблема. Сохраняю содержимое таблицы(qtableview) в...

Правильная кодировка в txt из bat-файла
Написал такой код: @echo off Rem Считываем имя файла/папки if &quot;%1&quot;==&quot;&quot; goto help if not exist %1 goto help set Fname=%1 ...

Не правильная кодировка при отправке почты
Здравствуйте. При отправке писем на русском языке, на все почтовые сервисы кроме mail.ru письма приходят нормально. А на mail.ru приходят...

7
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
06.05.2019, 15:50
АнатолийШ, и где ты меняешь кодировку?
0
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
06.05.2019, 17:23  [ТС]
korvin_, в данном коде нигде. Я когда добавлял в StringBuilder новую строку пытался менять у нее кодировки на разные и в итоге все равно не то выходило, и на cp1251 менял и на 866.
Конкретно вот эту строку которую получаю со своей View через ajax на контроллер
Java
1
.append(status.getName())
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
06.05.2019, 18:58
АнатолийШ, не уверен, но возможно нужно для стрима кодировку задать..
Java
1
new InputStreamResource(new FileInputStream(file), "UTF-8") //синтаксис погуглите нет IDE под рукой
0
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
06.05.2019, 19:59  [ТС]
reisal78, спасибо за подсказку, но ничего такого нету к сожалению. ни один из конструкторов не принимает charset вторым или каким бы то было параметром

Добавлено через 54 секунды
но и такой момент что именно скачивается файл как надо и данные в нем в utf-8 именно беда с самим названием файла
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
06.05.2019, 20:03
Цитата Сообщение от АнатолийШ Посмотреть сообщение
в StringBuilder новую строку пытался менять у нее кодировки на разные и в итоге все равно не то выходило, и на cp1251 менял и на 866.
Каким же образом? В StringBuilder'е нет никаких кодировок.

Цитата Сообщение от reisal78 Посмотреть сообщение
но возможно нужно для стрима кодировку задать..
Нет, у него проблема с именем файла, а не его содержимым. Хотя, возможно, тут тоже понадобится.

АнатолийШ, тебе нужно header с кодировкой добавить в ResponseEntity.
0
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
06.05.2019, 22:09  [ТС]
korvin_, пытался это сделать вот таким образом
Java
1
2
Charset utf8 = Charset.forName("UTF-8");
        MediaType mediaType = new MediaType("text", "html", utf8);
К сожалению все равно это не работает.Я может что-то делаю не так, не могли бы вы более конкретно подсказать, заранее спасибо!
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
06.05.2019, 22:39
АнатолийШ, https://stackoverflow.com/a/6745788
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.05.2019, 22:39
Помогаю со студенческими работами здесь

Правильная кодировка URL ссылки при запросе
Всем привет. Есть проблема, решить не могу, google не помогает. При нажатии на кнопку программа скачивает страничку с поисковым...

Записать имя каждого текстового файла в начало каждой строки этого же файла (кодировка файлов — UTF-8)
Подскажите программу или батник. Проблема в том, что есть много TXT UTF-8 файлов, нужно взять имя файла и поместить его в начало каждой...

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения
На с++

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения/
C++

Не правильная кодировка
Привет всем! Скажите пожалуйста, имеется база с кодировкой utf-8. Загружаю в таблицу menu простой текст и в формате utf-8 и в формате...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru