Spring Boot 2.1.2.RELEASE在multipartfile请求中出现特殊字符问题

时间:2019-03-06 13:54:35

标签: java spring-boot utf-8 multipart

我有一个使用Spring Boot的项目,我正在尝试上载包含特殊字符 ie的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:使用mutipartfile的inputstreamreader

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上部署和运行。

注意:在本地系统上的eclispse(Luna)IDE中运行应用程序时,会在控制台中获得正确的输出。

0 个答案:

没有答案