Spring Boot拦截器,拦截返回中文乱码的问题

时间:2020-05-29 06:03:10

标签: java spring spring-boot-actuator

Spring Boot拦截器,拦截返回中文乱码的问题。

所示的代码结构

enter image description here

代码显示如下

demoFilter

public class demoFilter extends GenericFilterBean {

  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;

    response.getWriter().write("您好");
    return;

  }
}

FilterConfig

@Configuration
public class FilterConfig {

  @Bean
  public FilterRegistrationBean jwtFilter() {
    final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(new demoFilter());
    registrationBean.addUrlPatterns("/*");
    return registrationBean;
  }

}

控制器

@RestController
public class Demo {

  @RequestMapping(value = "demo", method = RequestMethod.GET)
  public String getStr(HttpServletRequest request, HttpServletResponse response) {
    return "demo";
  }
}

SpringApplication

@SpringBootApplication
public class DemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

项目开始,请访问http://localhost:8080/demo

实际回报:??

预期回报:您好

enter image description here

我在application.properties中添加了以下配置:

spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

浏览器访问,返回:

enter image description here

邮递员访问并返回正确的结果。

enter image description here

我想问一下,如何完美地解决此问题,以便浏览器返回正确的中文。

1 个答案:

答案 0 :(得分:0)

已解决,并添加了以下代码来解决该问题:

response.setContentType("text/html;charset=UTF-8");

enter image description here

enter image description here

相关问题