MockMvc:将 MockHttpServletResponse 的默认字符编码从 ISO-8859-1 更改为 UT



在编写Spring Itegration Tests时,我遇到了MockMvc忽略我的问题

.accept(MediaType.APPLICATION_JSON_UTF8) 

设置,并返回 ISO-8859-1 并带有不好看的变音符号。

将 MockMvc 的默认编码设置为 UTF-8 的最佳方法是什么?

我读到在春季启动中以下设置会有所帮助。

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响应字符集错误

这对我有用(Spring Framework 5.3.18(:

MockMvcBuilders.defaultResponseCharacterEncoding(StandardCharsets.UTF_8)

例如:

MockMvc mockMvc = MockMvcBuilders
                   .standaloneSetup(controller)
                   .defaultResponseCharacterEncoding(StandardCharsets.UTF_8)
                 .build();

最新更新