diff --git a/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java b/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java index 62907ec3e22..50e9a264d1a 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java +++ b/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java @@ -149,7 +149,9 @@ public class MultipartHttpMessageWriter extends MultipartWriterSupport /** * Set the character set to use for part headers such as * "Content-Disposition" (and its filename parameter). - *
By default this is set to "UTF-8". + *
By default this is set to "UTF-8". If changed from this default,
+ * the "Content-Type" header will have a "charset" parameter that specifies
+ * the character set used.
*/
public void setCharset(Charset charset) {
Assert.notNull(charset, "Charset must not be null");
diff --git a/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java b/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java
index d7cf5181219..0ddae070e04 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java
@@ -102,7 +102,11 @@ public class MultipartWriterSupport extends LoggingCodecSupport {
params.putAll(mediaType.getParameters());
}
params.put("boundary", new String(boundary, StandardCharsets.US_ASCII));
- params.put("charset", getCharset().name());
+ Charset charset = getCharset();
+ if (!charset.equals(StandardCharsets.UTF_8) &&
+ !charset.equals(StandardCharsets.US_ASCII) ) {
+ params.put("charset", getCharset().name());
+ }
mediaType = (mediaType != null ? mediaType : MediaType.MULTIPART_FORM_DATA);
mediaType = new MediaType(mediaType, params);
diff --git a/spring-web/src/test/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriterTests.java b/spring-web/src/test/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriterTests.java
index a412102f9c2..167b300fd37 100644
--- a/spring-web/src/test/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriterTests.java
+++ b/spring-web/src/test/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriterTests.java
@@ -190,7 +190,7 @@ public class MultipartHttpMessageWriterTests extends AbstractLeakCheckingTests {
assertThat(contentType.isCompatibleWith(mediaType)).isTrue();
assertThat(contentType.getParameter("type")).isEqualTo("foo");
assertThat(contentType.getParameter("boundary")).isNotEmpty();
- assertThat(contentType.getParameter("charset")).isEqualTo("UTF-8");
+ assertThat(contentType.getParameter("charset")).isNull();
MultiValueMap