• 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();
            }

    原来的:鞋æ乱码解决

  • 相关阅读:
    使用 SVN Hook 实现服务器端代码自动更新
    在Windows下配置svn服务端钩子程序(部分)
    @RequestParam,@PathParam,@PathVariable等注解区别
    @ConditionalOnProperty 详解
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
    Ajax中Delete请求参数 后台无法获取的解决方法(Restful风格)
    原生JS和jQuery版实现文件上传功能
    捡芝麻与捡西瓜
    在行动中思考
    日常相关的标准技术和组织
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/9072544.html
Copyright © 2020-2023  润新知