ответ кодировки символов при загрузке - PullRequest
0 голосов
/ 09 декабря 2018

В моем весеннем загрузочном приложении я получаю ответ Json в следующем формате от RestTemplate.Тем не менее, когда я тестировал то же самое в URL непосредственно в браузере, я получаю правильный ответ JSON. Это формат hello.gz.Это проблема с кодировкой символов?

BÈ \ u001Bå% \ u0011Áfbâÿ | yÇoþ \ u0019Y¤Zb \ u000E © ¿ùÝzùÝÖ½6 \ u001AÔ ~ ü \ u0019B £ IVY¯u ¥ \ u008B \ u0012 \ u0017f¿Ùü \ u0081¢ \ u0084üÿ \ u0016ûl 8 \ u009B \ u0081MÆμ \ u001F «\ u0006 \ u0085vz \ u001Deúz¬Í¤ × Ae \ u0010 \ u000E" {a¡ £ / É¡Ò \ u0090rHù \ u0096¼ \ u009C ± сс \ u0004 \ u000F ÷bÀ ° N \ u002 \ u0087Ì, 2 £ ChÖ \ u0001 ~ \ \ u000BN? ¨´> 5ÀTvÔ u001CÞC £ u009F> Þ * lÆ £ Ú u008FC \ u00831þªÀÙÙ + uWÎ8ëy \ u0083` \ u0099\ u000B £ ÷ ñU´Æè & + b \ u0018Ô ~ éÆ \ u0083 ° ùFgÉÈ \ uFFFD L;

Я добавил следующие строки в applcation.properties.

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

Also I enabled GZip compression in Spring Boot

# Enable response compression
server.compression.enabled=true

# The comma-separated list of mime types that should be compressed
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json

# Compress the response only if the response size is at least 1KB
server.compression.min-response-size=1024

Ниже мой код.

@GetMapping(value = { "/", "/hello" }, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> hello() {

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<String>(null, headers);

        RestTemplate restTemplate = new RestTemplate();
        //restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
        ResponseEntity<String> entity2 = restTemplate.exchange(
                "https://XXXXX.8080/hello.gz", HttpMethod.GET, null,
                String.class);
        String body = entity2.getBody();

        System.out.println(body);

        return ResponseEntity.ok(body);
    }

1 Ответ

0 голосов
/ 09 декабря 2018

Замена MediaType.APPLICATION_JSON_VALUE на MediaType.APPLICATION_JSON_UTF8_VALUE должна работать.

В противном случае попробуйте добавить конвертер сообщений с кодировкой UTF-8 в RestTemplate:

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
        .add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...