Spring RestTemplate中文乱码解决方案

  由于RestTemplate的默认构造方法初始化的StringHttpMessageConverter的默认字符集是ISO-8859-1,所以导致RestTemplate请求的响应内容会出现中文乱码。在这里我就要无力的吐槽一下了,Spring.StringHttpMessageConverter的默认字符集为啥是ISO-8859-1,难道不是UTF-8更通用一些吗?这个问题等大神给我答案吧。

  其实本来网上已经有了两种解决方案,但是我并不喜欢那样的解决方案。具体怎么做,各位看官看是仔细查看吧。http://blog.csdn.net/hongchangfirst/article/details/7962312

  废话不多说,我的解决方案基本思路就是获取RestTemplate的MessageConverter列表,然后删除StringHttpMessageConverter;初始化字符集为UTF-8的StringHttpMessageConverter,并将其添加到RestTemplate的MessageConverter列表中。代码如下

        /*
        *初始化RestTemplate,RestTemplate会默认添加HttpMessageConverter
        * 添加的StringHttpMessageConverter非UTF-8
        * 所以先要移除原有的StringHttpMessageConverter,
        * 再添加一个字符集为UTF-8的StringHttpMessageConvert
        * */
        private void reInitMessageConverter(RestTemplate restTemplate){
            List<HttpMessageConverter<?>> converterList=restTemplate.getMessageConverters();
            HttpMessageConverter<?> converterTarget = null;
            for (HttpMessageConverter<?> item : converterList) {
                if (item.getClass() == StringHttpMessageConverter.class) {
                    converterTarget = item;
                    break;
                }
            }

            if (converterTarget != null) {
                converterList.remove(converterTarget);
            }
            HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
            converterList.add(converter);
        }

  另外,我使用的是Android-Spring 并且已经测试,这种解决方案可行,至于在web-Spring我就不清楚了,看官可以亲自测试下。

时间: 2024-10-05 21:13:46

Spring RestTemplate中文乱码解决方案的相关文章

Spring velocity 中文乱码 解决方案

主要有这么几步,在spring web 的  [sevlet-name]-servlet.xml文件中,修改为: 黑体字体为关键,其它根据你的实际情况配置: <!-- ========================= VIEW DEFINITIONS ========================= -->     <bean id="velocityViewResolver" class="org.springframework.web.servlet

客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案

最近在制作一个安装包,需要安装的时候执行mysql脚本儿,做了一个批处理,但是发现总是执行到 插入中文的时候报错,或者插入中文是乱码. 网上查了好多资料,说是把编码改成GBK什么的,终究还是不成功. 最后经过多次测试,现把解决方案分享给大家. 第一步:打开mysql中的配置文件,my.ini,看一看配置文件中 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 看是不是这样配置的.因为utf8 是国际通用的,

PHP函数imagefttext( )因--enable-gd-jis-conv引发中文乱码解决方案

阐述 最近几天与公司的PHP开发人员测试即将上线的WEB站点(致难忘的青春岁月:http://hd.gfan.com),在内网测试环境没有任何问题,但在线上测试时,发现通过PHP的GD函数 imagefttext()引用FreeType字体将文本信息写入图像时,出现中文乱码:对此问题,我们在整个排查过程中,总结了三个能引起中文乱码的原因,如下: 1.Linux系统字符集是否支持中文? [email protected]:~#locale LANG=en_US.UTF-8 LANGUAGE=en_

boost::xml——基本操作以及中文乱码解决方案

下面是本人使用boost库的xml部分的基础操作,并且解决对于大家使用boost库读写中文xml内容出现的乱码问题. 1.实现boost库xml基本操作2.解决boost对xml中中文乱码问题3.实现普通字符串和宽字符串的傻瓜切换(模仿tchar.h)4.代码运行环境为VS2010,需要导入boost库才能正常运行5.VS2010运行时可能会发生错误.例如:cl.exe 或者 cvtres.exe 报错. 解决办法就是重新打开项目或者切换其它正常项目运行一下(反正我是这么解决的) 下面是源码部分

页面传参中文乱码解决方案

jsp页面传递参数到servlet,只要参数有中文就是乱码,大多数是??????乱码,尝试了网上比较普遍的好多种办法都不行,最后加了一句话解决掉,分享给大家. 1.打开tomcat安装目录 2.找到conf文件夹 3.打开里面的server.xml 4.找到 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443

ubuntu下中文乱码解决方案(全)

ubuntu下中文乱码解决方案(全) UBUNTU linux中解压zip 中文乱码 (unzip) 有2种方式解决问题: 1. 通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以) 有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明. 2. 在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件 /etc/environment中加入2行 UNZIP="-O

[Shell编译]Windows Cmd显示中文乱码解决方案

chcp 65001  就是换成UTF-8代码页 chcp 936 可以换回默认的GBK chcp 437 是美国英语[Shell编译]Windows Cmd显示中文乱码解决方案

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器进行设置之类的,结果没有一个有效果,暑假学习了用Dos来开发Java程序,输入cmd命令中dir(directory)进行查询操作时,显示了一堆中文乱码,原本是想重装系统的,因为电脑里面重要东西有点多,所以自己花了一段时间捣鼓了一下电脑,终于解决了如上两个问题,现在心里很开心,附上如下两幅图: cm

aspx页面,中文乱码解决方案

由于文件编码方式编码方式不统一出现样式中文乱码解决方案: 今天碰到的问题:页面字体样式设置的'微软雅黑',可页面没引用.我调试看到样式出现中文乱码了 这种问题,就需要转换文件的编码方式,如下两步即可解决 第一步:在visual studio 2010中,“文件”菜单“Default.aspx另存为”命令,出现“另存文件为”对话框,点击“保存”按钮右边的小三角,“编码保存”命令,然后选择gb2312 第二步:在web.config里设置<globalization requestEncoding=