Character encoding MockMvc:将MockHttpServletResponse的默认字符编码从ISO-8859-1更改为UTF-8
在编写Spring集成测试时,我遇到了一个问题,MockMvc忽略了我的Character encoding MockMvc:将MockHttpServletResponse的默认字符编码从ISO-8859-1更改为UTF-8,character-encoding,mockmvc,Character Encoding,Mockmvc,在编写Spring集成测试时,我遇到了一个问题,MockMvc忽略了我的 .accept(MediaType.APPLICATION_JSON_UTF8) 设置,并返回外观不好的ISO-8859-1 umlaut 将MockMvc的默认编码设置为UTF-8的最佳方法是什么?我认为在spring boot中,以下设置会有所帮助 spring.http.encoding.force=true 在我的例子中,设置有点特殊,它没有 对我的设置有效的方法是在MockMvc设置中添加一个过滤器 @Be
.accept(MediaType.APPLICATION_JSON_UTF8)
设置,并返回外观不好的ISO-8859-1 umlaut
将MockMvc的默认编码设置为UTF-8的最佳方法是什么?我认为在spring boot中,以下设置会有所帮助
spring.http.encoding.force=true
在我的例子中,设置有点特殊,它没有
对我的设置有效的方法是在MockMvc设置中添加一个过滤器
@Before
public void setUp() {
mockMvc = MockMvcBuilders
.webAppContextSetup(webApplicationContext)
.addFilter((request, response, chain) -> {
response.setCharacterEncoding("UTF-8"); // this is crucial
chain.doFilter(request, response);
}, "/*")
.build();
}
希望它能帮助别人,并节省几个小时的尝试和错误。我也遇到了同样的问题,并注意到默认的MockMvc似乎不支持
spring.http.encoding.force=true
,也就是说,使用spring.http.encoding.xxx
只在使用@springbootest
时,它缺少字符编码过滤器
,但在@WebMvcTest
时不起作用。后者仅在添加@Import(HttpEncodingAutoConfiguration.class)
时才起作用。这些都不适合我。MockMvc可能会非常令人沮丧,因为这样的事情。