0

I have been trying to download an attachment with a Chinese filename but somehow their encoding changes to some gibberish filename while downloading.

Here's my code -

String fileName = "出口项目.zip";

final HttpHeaders headers = new HttpHeaders();

headers.setContentDisposition(ContentDisposition
                    .builder("attachment")
                    .filename(fileName).build());

return ResponseEntity.ok()
                     .contentType(MediaType.APPLICATION_OCTET_STREAM)
                     .headers(headers)
                     .body(fileInputStreamResource);

I have already tried filename= URLEncoder.encode(fileName, "UTF-8"); and all other solutions available on Stack overflow but always get only 2 types of response-

  1. either the file name changes to '????.zip'.
  2. or if the encoded characters fall in ASCII then the filename is the encoded name. (eg: \u51FA\u53E3\u9879\u76EE.zip)

Technology used- Java 17 for Spring Boot and using Postman for requests.

Is there any way I can preserve the Chinese characters in Content-Disposition or any workaround?

0 Answers0