Spring RestTemplate 之中文乱码

由于RestTemplate的默认构造方法初始化的StringHttpMessageConverter的默认字符集是ISO-8859-1,所以导致RestTemplate请求的响应内容会出现中文乱码。

解决办法:

springboot中@Bean配置的时候要把StringHttpMessageConverter编码改成UTF8格式。:

@Bean    

public RestTemplate restTemplate() {

        RestTemplate restTemplate = new RestTemplate();

        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));        

        return restTemplate;

    }

applicationContext.xml配置中:

<bean id="requestFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory">

        <property name="readTimeout" value="10000"/>

        <property name="connectTimeout" value="5000"/>

</bean>

<bean id="simpleRestTemplate" class="org.springframework.web.client.RestTemplate">

       <constructor-arg ref="requestFactory"/>

       <property name="messageConverters">

            <list>

                <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>

                <bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter"/>

                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>

                <bean class="org.springframework.http.converter.StringHttpMessageConverter">

                     <property name="supportedMediaTypes">

                            <list>

                                <value>text/plain;charset=UTF-8</value>

                            </list>

                     </property>

                </bean>

            </list>

        </property>

  </bean>

原文地址:https://www.cnblogs.com/jnba/p/10522613.html