RestController получает неверную кодировку в RequestBody - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть следующие 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
Выставлено CharacterEncodingFilter
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public CharacterEncodingFilter charsetFilter() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("UTF-8");
    filter.setForceEncoding(true);
    return filter;
}

Выполняется jar файл с -Dfile.encoding=UTF-8 параметром

Включены следующие заголовки в Почтальоне

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

Что еще Я должен делать? Или я что-то упустил?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Если проблема заключается в ведении журнала , измените регистратор кодировку на поддержку UTF-8

#encoding- Over-ride the default character-encoding scheme.
logging.console.encoding=UTF-8
1 голос
/ 26 февраля 2020

Попробуйте изменить свой код следующим образом:

@ApiOperation(value = "Search product by text")
@PostMapping(value="/get/search", consumes="application/json;charset=UTF-8")
public ResponseEntity<List<ShopProductDTO>> get(@RequestBody SearchProductRequestDTO search) {
    //searching product here using search.getSearchText() value
}

Изменение в вашей строке
@PostMapping ( value ="/ get / search", потребляет = "приложения / JSON; кодировка = UTF-8" )

...