RestTemplate返回值中文亂碼問題

目錄

問題

排查問題

修改問題:

測試:


問題

在使用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);

測試

至此,亂碼問題修復

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章