添加UTF-8编码ResponseEntity

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

我有这样一个responseEntity

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
requestHeaders.setContentType(MediaType.valueOf("text/plain;charset=UTF-8"));

HttpEntity requestEntity = new HttpEntity(jsonQuery, requestHeaders);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);

//Not in UTF-8!!
logger.debug("result: " + responseEntity.getBody());

但它不是编码UTF-8并产生文字是这样的:Soci굩。是否有可能使其在UTF-8或以某种方式在restTemplate添加编码?

spring
2个回答
6
投票
requestHeaders .add("Content-Type", "text/html; charset=utf-8");

1
投票

解决的办法是增加一个StringHttpMessageConverterutf-8豆状restTemplate

@Bean
public RestTemplate restTemplate() {
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters()
            .add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
    return restTemplate;
}
© www.soinside.com 2019 - 2024. All rights reserved.