Spring boot 2.1.2. RELEASE получает специальную символьную проблему в запросе нескольких частей - PullRequest
0 голосов
/ 06 марта 2019

У меня есть проект с загрузкой Spring, и я пытаюсь загрузить файл csv, который содержит специальный символ т.е.: "ΕΛΙΑ ΚΑΤΑΣΚΕΥΑΣΤΙΚΗ Α.Ε." при обработке файла специальный символ заменяется следующим "???? ???????????????.?."

Контроллер

@RequestMapping(value = "/processfile", method = RequestMethod.POST)
public void processMultiPartFile(HttpServletRequest request, @RequestParam("files") MultipartFile[] files) {
    for (MultipartFile file : files) {

    System.out.println("File data-->>"+new String(file.getBytes(),"UTF-8"))

}

}

Попытка найти следующие решения, но пока безуспешно:

Решение 1: установить кодировку символов в запросе

request.setCharacterEncoding("UTF-8");

Решение 2: использовать inputtreamreader файла mutipartfile

BufferedReader in = new BufferedReader(new InputStreamReader(file.getInputStream(), "UTF-8"));
                 String line = null;
                 while((line = in.readLine()) != null) {
                     System.out.println("read data----->"+line);
                 }

Решение 3: попробуйте с CommonsMultipartResolver

exclude auto configuration by 

@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})          

and add custom resolver

@Bean(name="multipartResolver")
public CommonsMultipartResolver multipartResolver(){
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setDefaultEncoding("UTF-8");
    return resolver;
}

и добавьте следующую зависимость в pom.xml

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.4</version>
    </dependency>

Прикладная среда

  • Платформа 1: Windows 7, развертывание и запуск на консоли (для локальной отладки)
  • Платформа 2: Google Cloud, развертывание и запуск в AppEngine.

Примечание. При запуске приложения в IDE eclispse (Luna) в локальной системе выводится правильный вывод в консоли.

...