Java 如何在spring boot中启用utf-8请求主体?

Java 如何在spring boot中启用utf-8请求主体?,java,json,spring,spring-boot,Java,Json,Spring,Spring Boot,我有一个springboot项目(springboot版本:v2.3.0.RELEASE)。在我的api中,我希望接收字符串体,然后按照我的意愿处理它。问题是,如果此字符串正文中包含utf-8字符,它会以某种方式更改字符串: @RequestMapping(value= "/target", method = RequestMethod.POST) public List<Target> createTarget(@RequestBody Stri

我有一个springboot项目(springboot版本:v2.3.0.RELEASE)。在我的api中,我希望接收字符串体,然后按照我的意愿处理它。问题是,如果此字符串正文中包含utf-8字符,它会以某种方式更改字符串:

    @RequestMapping(value= "/target", method = RequestMethod.POST)
    public List<Target> createTarget(@RequestBody String body) {
       return this.createTargets(body);
    }
@RequestMapping(value=“/target”,method=RequestMethod.POST)
public List createTarget(@RequestBody-String-body){
返回此.createTargets(body);
}

如果字符串中没有utf-8字符(这是json btw),那么当我调试
body
变量的值时,它看起来正常。但是当我试图将utf-8字符发布到api中时,会发生的是整个
正文
字符串的最后一个字符被剥离。我不知道为什么会这样?尝试了一些针对stackoverflow的修复,但到目前为止没有帮助=/。我的情况是发送一个包含数组的json字符串。所以最后一个方括号
]
被剥掉了,我不知道为什么。

能够解决这个问题。事实证明,这不一定只是spring boot的问题。简而言之,我从请求中删除了此标头,它开始工作得很好:

'Content-Length':data.Length,


因此,由于字符串中包含utf-8字符的某些原因,data.length可能会偏离1?或者是spring boot把它看得太重了,因此从字符串中删除了最后一个字符。

您可以尝试转义字符。 转换:
例如,符号Δ将为\u0394

您是否尝试在@RequestMapping()中添加“consumes=MediaType.APPLICATION\u JSON”