在编写Spring集成测试时,我遇到了一个问题,即MockMvc忽略了我的
.accept(MediaType.APPLICATION_JSON_UTF8)
设置后返回ISO-8859-1编码,umlaut看起来不好。
如何将MockMvc的默认编码设置为UTF-8?
在编写Spring集成测试时,我遇到了一个问题,即MockMvc忽略了我的
.accept(MediaType.APPLICATION_JSON_UTF8)
设置后返回ISO-8859-1编码,umlaut看起来不好。
如何将MockMvc的默认编码设置为UTF-8?
我听说在 Spring Boot 中,以下设置将有所帮助。
spring.http.encoding.force=true
@Before
public void setUp() {
mockMvc = MockMvcBuilders
.webAppContextSetup(webApplicationContext)
.addFilter((request, response, chain) -> {
response.setCharacterEncoding("UTF-8"); // this is crucial
chain.doFilter(request, response);
}, "/*")
.build();
}
希望这些能帮助到一些人,节省尝试和错误的时间。
MockMvcBuilders.defaultResponseCharacterEncoding(StandardCharsets.UTF_8)
例如:
MockMvc mockMvc = MockMvcBuilders
.standaloneSetup(controller)
.defaultResponseCharacterEncoding(StandardCharsets.UTF_8)
.build();
这对我有用:
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
我从这个SO问题得到了灵感:SpringBoot响应字符集错误
spring.http.encoding.force=true
,即缺少CharacterEncodingFilter
。 - elonderin@SpringBootTest
时,才能使用spring.http.encoding.xxx
。但是,在使用@WebMvcTest
时,只有添加@Import(HttpEncodingAutoConfiguration.class)
才能生效。 - elonderin