zoukankan      html  css  js  c++  java
  • RestTemplate中文乱码问题(spring-web3.0.7版本)

    
    

    从网上找的方法:

    方法一:

            //resttemplate乱码问题
            //3.1.X以上版本使用
    //        restTemplate.getMessageConverters().add(0, StringHttpMessageConverter.DEFAULT_CHARSET);
    //        3.0版本
            List<HttpMessageConverter<?>> converterList=restTemplate.getMessageConverters();
            HttpMessageConverter<?> converter = new StringHttpMessageConverter();
            converterList.add(0, converter);
            restTemplate.setMessageConverters(converterList);
    
    
            HttpHeaders headers = new HttpHeaders();
            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
            headers.setContentType(type);
            headers.add("Accept", MediaType.APPLICATION_JSON.toString());

    参考:

      https://blog.csdn.net/kinbridge/article/details/73477731

    方法二:

      xml配置

        <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
            <constructor-arg index="0">
                <list>
                    <bean id="byteArrayHttpMessageConverter"
                        class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean>
                    <bean id="stringHttpMessageConverter"
                        class="org.springframework.http.converter.StringHttpMessageConverter">
                        <constructor-arg value="UTF-8"></constructor-arg>
                    </bean>
                    <bean id="resourceHttpMessageConverter"
                        class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean>
                    <bean id="sourceHttpMessageConverter"
                        class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean>
                    <bean id="allEncompassingFormHttpMessageConverter"
                        class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"></bean>
                    <bean id="jaxb2RootElementHttpMessageConverter"
                        class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></bean>
                    <bean id="mappingJackson2HttpMessageConverter"
                        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
                </list>
            </constructor-arg>
        </bean>

    参考:

      http://yangzelin-job09.iteye.com/blog/2275367

    方法三:

      xml配置

     <bean id="ky.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="ky.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://blog.csdn.net/qq_32193151/article/details/72902898

    以上都试过,可能使我们spring的版本太低,具体也不大清楚,还出现乱码问题,有时候最简单的也是最有效的,我直接用new String()的方式,解决了!!!

    终极解决方法:

      查看spring源码中org.springframework.http.converter.StringHttpMessageConverter类中,默认编码格式为默认为ISO-8859-1。

      在java代码中直接转换。

    //restTemplate默认为iso8859-1,需要转换编码格式
            try {
                body = new String(body.getBytes("iso8859-1"),"utf-8");
            } catch (UnsupportedEncodingException e1) {
                log.error("iso8859-1编码格式转换utf-8错误");
                e1.printStackTrace();
            }

    原来的:鞋æ乱码解决

  • 相关阅读:
    针对Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决方案
    MAC配置C++运行环境
    Keras 模型相关操作
    微信小程序 WXS
    vue 长列表优化
    webpack4 SplitChunks插件 代码拆分
    node path api
    mysql的模型依赖说明
    MySQL和MyCat replace
    SQL Server中WITH(NOLOCK)提示用在视图上会怎样(转载)
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/9072544.html
Copyright © 2011-2022 走看看