Spring 引导编码/特殊字符

Spring Boot encoding / special characters

我对 Spring 引导 REST API 特殊 cs_CS 字符的编码有问题。

示例:

@ResponseBody
@RequestMapping("/api/test")
public String test(){
    String specialCH = "ěščřžýáíéúů";
    System.out.println(specialCH);

    return specialCH;
}


2020-11-16 11:22:04.557  INFO 7400 --- [           main] cz.fry.chmi.ChmiApplication              : Started ChmiApplication in 5.187 seconds (JVM running for 5.703)
2020-11-16 11:22:05.167  INFO 7400 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-11-16 11:22:05.168  INFO 7400 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-11-16 11:22:05.175  INFO 7400 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 7 ms
ěščřžýáíéúů

浏览器结果:

result

application.properties:

server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true

OS Windows 10 1909.

PS: 如果我创建文件 test.html ->

+ěššččřřžýáíéáý

浏览器结果:

result

我找到了解决方案

只需要在 Spring MVC 返回字符串中强制使用 UTF-8 编码:

@RequestMapping中,使用:

produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8"