Skip to content

Commit 3cdda3a

Browse files
committed
FormHttpMessageConverter should use UTF-8 on default for converting "MULTIPART_FORM_DATA"
1 parent 4a81aab commit 3cdda3a

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public FormHttpMessageConverter() {
104104
this.supportedMediaTypes.add(MediaType.MULTIPART_FORM_DATA);
105105

106106
this.partConverters.add(new ByteArrayHttpMessageConverter());
107-
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
107+
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(DEFAULT_CHARSET);
108108
stringHttpMessageConverter.setWriteAcceptCharset(false);
109109
this.partConverters.add(stringHttpMessageConverter);
110110
this.partConverters.add(new ResourceHttpMessageConverter());

spring-web/src/test/java/org/springframework/http/converter/FormHttpMessageConverterTests.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,19 @@ public void writeMultipartOrder() throws Exception {
247247
allOf(startsWith("<MyBean"), endsWith("><string>foo</string></MyBean>")));
248248
}
249249

250-
251-
private static class MockHttpOutputMessageRequestContext implements RequestContext {
250+
@Test
251+
public void writeMultipartWith_Utf8_AsDefaultEncoding() throws IOException {
252+
MultiValueMap<String, String> body = new LinkedMultiValueMap<String, String>();
253+
String easternEuropeCharacters = "łęąć";
254+
body.set("param", easternEuropeCharacters);
255+
MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
256+
this.converter.write(body, MediaType.MULTIPART_FORM_DATA, outputMessage);
257+
258+
assertThat("Invalid encoding of Eastern Europe characters", outputMessage.getBodyAsString(UTF_8),
259+
containsString(easternEuropeCharacters));
260+
}
261+
262+
private static class MockHttpOutputMessageRequestContext implements RequestContext {
252263

253264
private final MockHttpOutputMessage outputMessage;
254265

0 commit comments

Comments
 (0)