Как сделать весеннюю загрузку по умолчанию для application / json; charset = utf-8 вместо application / json; charset = iso-8859-1 - PullRequest
0 голосов
/ 11 апреля 2019

Я обновляю spring-boot с 1.3.6 до 2.1.3, и если раньше ответы имели тип контента application/json;charset=UTF-8, теперь я получаю кодировку iso-8859-1.

Я бы хотел получить utf 8.

Мой контроллер выглядит так:

@Controller
public class MyController {
    @RequestMapping(value={"/myService/{serviceId}"}, method=RequestMethod.POST, consumes="application/json")
    public ResponseEntity<Void> handlePostServiceId(final InputStream requestInputStream,
            @PathVariable String serviceId,
            final HttpServletRequest servletRequest,) {
       <$businessLogic>
       return new ResponseEntity<>(new HttpHeaders(), HttpStatus.ACCEPTED);
}

Я могу заставить его возвращать utf-8, если я включу produces= MediaType.APPLICATION_JSON_UTF8_VALUE в свой @RequestMapping, но я бы хотел установить его только один раз, а не для каждого отдельного API.

Я также попытался добавить

@Override
    public void configureContentNegotiation(
         ContentNegotiationConfigurer configurer) {
         configurer.defaultContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
    }

на мой WebMvcConfigurer, как предложено здесь: https://stackoverflow.com/a/25275291/2855921, но это нарушило мой API доступности, который использует простой / текстовый тип контента.

Я также гарантировал, что мой запрос был в формате UTF-8, поэтому он не просто отражает формат, который я дал.

Есть идеи о том, как установить кодировку UTF-8 для всего проекта?

1 Ответ

0 голосов
/ 12 апреля 2019

Добавьте следующие свойства в файл application.properties :

# Charset of HTTP requests and responses. Added to the "Content-Type" 
#header if 
#not set explicitly.
spring.http.encoding.charset=UTF-8
# Enable http encoding support.
spring.http.encoding.enabled=true
# Force the encoding to the configured charset on HTTP requests and responses.
spring.http.encoding.force=true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...