diff --git a/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java index ee7d2471c..6d80f8a84 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java @@ -614,8 +614,9 @@ public class JakartaServletUtil { */ public static void write(final HttpServletResponse response, final InputStream in, final String contentType, final String fileName) { final String charset = ObjUtil.defaultIfNull(response.getCharacterEncoding(), CharsetUtil.NAME_UTF_8); - response.setHeader("Content-Disposition", StrUtil.format("attachment;filename=\"{}\"", - URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)))); + final String encodeText = URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)); + response.setHeader("Content-Disposition", + StrUtil.format("attachment;filename=\"{}\";filename*={}''{}", encodeText, charset, encodeText)); response.setContentType(contentType); write(response, in); } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java index 64338a9be..c58da909f 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java @@ -613,8 +613,9 @@ public class ServletUtil { */ public static void write(final HttpServletResponse response, final InputStream in, final String contentType, final String fileName) { final String charset = ObjUtil.defaultIfNull(response.getCharacterEncoding(), CharsetUtil.NAME_UTF_8); - response.setHeader("Content-Disposition", StrUtil.format("attachment;filename=\"{}\"", - URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)))); + final String encodeText = URLEncoder.encodeAll(fileName, CharsetUtil.charset(charset)); + response.setHeader("Content-Disposition", + StrUtil.format("attachment;filename=\"{}\";filename*={}''{}", encodeText, charset, encodeText)); response.setContentType(contentType); write(response, in); }