MockMvc:将 MockHttpServletResponse 的默认字符编码从 ISO-8859-1 更改为 UTF-8
MockMvc: changing default character encoding of MockHttpServletResponse from ISO-8859-1 to UTF-8
在编写 Spring 集成测试时,我遇到了 MockMvc 忽略我的问题
.accept(MediaType.APPLICATION_JSON_UTF8)
设置,并返回了 ISO-8859-1 和难看的变音符号。
将 MockMvc 的默认编码设置为 UTF-8 的最佳方法是什么?
我认为在 spring 启动时以下设置会有所帮助。
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();
}
希望它对某人有所帮助并节省一些时间的尝试和错误。
这对我有用:
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
我从这个 SO 问题中得到了灵感:SpringBoot response charset errors
这对我有用(Spring Framework 5.3.18):
MockMvcBuilders.defaultResponseCharacterEncoding(StandardCharsets.UTF_8)
例如:
MockMvc mockMvc = MockMvcBuilders
.standaloneSetup(controller)
.defaultResponseCharacterEncoding(StandardCharsets.UTF_8)
.build();
在编写 Spring 集成测试时,我遇到了 MockMvc 忽略我的问题
.accept(MediaType.APPLICATION_JSON_UTF8)
设置,并返回了 ISO-8859-1 和难看的变音符号。
将 MockMvc 的默认编码设置为 UTF-8 的最佳方法是什么?
我认为在 spring 启动时以下设置会有所帮助。
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();
}
希望它对某人有所帮助并节省一些时间的尝试和错误。
这对我有用:
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
我从这个 SO 问题中得到了灵感:SpringBoot response charset errors
这对我有用(Spring Framework 5.3.18):
MockMvcBuilders.defaultResponseCharacterEncoding(StandardCharsets.UTF_8)
例如:
MockMvc mockMvc = MockMvcBuilders
.standaloneSetup(controller)
.defaultResponseCharacterEncoding(StandardCharsets.UTF_8)
.build();