目錄
問題
在使用RestTemplate
方法:postForEntity(String url, Object request, Class<T> responseType, Object... uriVariables)
返回的中文亂碼,如下:
排查問題
查看RestTemplate的構造函數,發現StringHttpMessageConvert默認的編碼是ISO-8859-1,源碼如下:
修改問題:
List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
httpMessageConverters.stream().forEach(httpMessageConverter -> {
if(httpMessageConverter instanceof StringHttpMessageConverter){
StringHttpMessageConverter messageConverter = (StringHttpMessageConverter) httpMessageConverter;
//設置編碼爲UTF-8
messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
}
});
//發送POST請求
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class);
測試
至此,亂碼問題修復