RestController在RequestBody中接收到不正确的字符集

问题描述 投票:0回答:2

我有以下api:

@ApiOperation(value = "Search product by text")
@PostMapping("/get/search")
public ResponseEntity<List<ShopProductDTO>> get(@RequestBody SearchProductRequestDTO search) {
    //searching product here using search.getSearchText() value
}

我要发送的邮递员:

{"searchText":"Утюг"}

但是我在日志中收到/看到的内容:

SearchProductRequestDTO{searchText='РЈС‚СРі'}

启用DEBUG后,我看到Http11InputBuffer日志在正文中:

{"searchText":"ГђВЈГ‘<U+0082>Г‘<U+008E>ГђВі"}

我做了什么(没有一个帮助):

  1. application.properties中添加了以下属性
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.basename=messages
spring.messages.encoding=UTF-8
  1. 曝光CharacterEncodingFilter
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public CharacterEncodingFilter charsetFilter() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("UTF-8");
    filter.setForceEncoding(true);
    return filter;
}
  1. 已执行jar参数的-Dfile.encoding=UTF-8文件

  2. 邮递员中包含以下标题

accept-charset:utf-8
content-type:application/json;charset=utf-8

我还应该做什么?还是我错过了什么?

java spring-boot character-encoding spring-restcontroller
2个回答
1
投票

尝试将您的代码更改为此:


1
投票

如果问题是记录

© www.soinside.com 2019 - 2024. All rights reserved.