Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Сохранение файла - кодировка / 13 сообщений из 13, страница 1 из 1
07.01.2017, 14:20
    #39380310
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
С сервера приходят
Файлы, но коверкаются названия становятся, что-то типо

--;-2- --;L7-20B5;59, A-25@H82H8E 70 7040205-K9 -5@8-4 E-BL -4=C D8=0=A-2CN --5@0F8N 2 @07@575 AB@C-BC@=KE --4@0745;5=89_070117_141730

Помог UrlEncoder - но пробелы превратились в %20, как вернуть нормальные пробелы?
...
Рейтинг: 0 / 0
07.01.2017, 15:37
    #39380326
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
-=Koba=-но пробелы превратились в %20, как вернуть нормальные пробелы?
replase
...
Рейтинг: 0 / 0
07.01.2017, 20:10
    #39380355
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
вадя-=Koba=-но пробелы превратились в %20, как вернуть нормальные пробелы?
replase

Что за replase
...
Рейтинг: 0 / 0
07.01.2017, 20:20
    #39380359
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
-=Koba=-Помог UrlEncoder
скорее помог URLDecoder - вторым параметром в конструкторе кодировка указывается
...
Рейтинг: 0 / 0
07.01.2017, 20:57
    #39380366
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
-=Koba=-Что за replase
Код: java
1.
2.
3.
 int n = location.getPath().lastIndexOf("WEB-INF");
 web_location = location.getPath().substring(0, n);
 web_location = web_location.replaceAll("%20", " ");
...
Рейтинг: 0 / 0
07.01.2017, 21:11
    #39380369
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
... а ещё - %28, %29 и кучку других "non-save" символов.
...
Рейтинг: 0 / 0
07.01.2017, 21:11
    #39380370
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
rema174-=Koba=-Помог UrlEncoder
скорее помог URLDecoder - вторым параметром в конструкторе кодировка указывается

Да нет как раз после encoder браузер начал нормально сохранять кроме, пробел
ов
...
Рейтинг: 0 / 0
07.01.2017, 21:44
    #39380377
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
Наиболее кошерно - Content-Disposition .
...
Рейтинг: 0 / 0
10.01.2017, 10:25
    #39381261
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
C %20 разобрался

Проблема, что в IE Opera стало работать
А в лисе не хочет, я уже пробовал

http://stackoverflow.com/questions/10407156/primefaces-filedownload-non-english-file-names-corrupt
http://stackoverflow.com/questions/5325322/java-servlet-download-filename-special-characters
...
Рейтинг: 0 / 0
15.01.2017, 12:49
    #39384964
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
Для Firefox решил так

http://stackoverflow.com/questions/18050718/utf-8-encoding-name-in-downloaded-file

FileDownloadActionListener из PrimeFace не учитывал это
Только теперь в Firefox ставил проставляться символы "_" спереди и сзади файла

Откуда они берутся?
...
Рейтинг: 0 / 0
15.01.2017, 13:21
    #39384977
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
Решил
externalContext.setResponseHeader("Content-Disposition", contentDispositionValue + ";filename*=\"utf8'ru-ru'"+ getReportFile().getName() + "\"");
...
Рейтинг: 0 / 0
21.10.2017, 10:31
    #39539842
Faraday
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
-=Koba=-, а полный код листнера какой? У меня такой и в Мозилле не работает все равно:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
//подготовка к скачиванию файла
    public void prepareFileToDownLoad(Filescommon filescommon) {
                
        byte[] buf = filescommon.getFiledata();
        ByteArrayInputStream bis = new ByteArrayInputStream(buf);
        String fn = filescommon.getFilename()+ filescommon.getFileras();
        String title = "filename";
        
        try {
            // Encoding
            title = URLEncoder.encode(fn, "UTF-8").replaceAll("\\+", "%20");
            FacesContext fc = FacesContext.getCurrentInstance();
            ExternalContext ec = fc.getExternalContext();
            ec.responseReset();
            ec.setResponseCharacterEncoding("UTF-8");
            ec.setResponseContentType("image/jpg");

            ec.setResponseHeader("Content-Disposition", "attachment; filename*=\"utf8'ru-ru'"+ title + "\""); 
                        
            fc.responseComplete();
                       
            
            
        } catch (UnsupportedEncodingException e1) {         
            e1.printStackTrace();
        }
       

        downLoadFile = new DefaultStreamedContent(bis, "image/jpg", title);

    }
...
Рейтинг: 0 / 0
22.10.2017, 11:43
    #39540055
Faraday
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение файла - кодировка
Разобрался как "обмануть" Firefox. Делаем так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
//подготовка к скачиванию файла
    public void prepareFileToDownLoad(Filescommon filescommon) {

        byte[] buf = filescommon.getFiledata();
        ByteArrayInputStream bis = new ByteArrayInputStream(buf);
        String fn = filescommon.getFilename() + filescommon.getFileras();
        String title = "filename";

        try {
            // Encoding
            title = URLEncoder.encode(fn, "UTF-8").replaceAll("\\+", "%20");            
            FacesContext fc = FacesContext.getCurrentInstance();
            ExternalContext ec = fc.getExternalContext();            
            HttpServletRequest request = (HttpServletRequest) ec.getRequest();
            String ua = request.getHeader("User-Agent");
            title = ua.contains("Firefox") ? MimeUtility.encodeWord(fn) : title;

        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        }
        downLoadFile = new DefaultStreamedContent(bis, "image/jpg", title);
    }
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сохранение файла - кодировка / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]