`
yangzelin_job09
  • 浏览: 32025 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RestTemplate 中文乱码解决方法

阅读更多
Spring4.2.2.RELEASE   RestTemplate 中文乱码解决方法
       
       RestTempalate 字符串类型默认StringHttpMessageConverter做转码,而StringHttpMessageConverter的默认编码集是ISO8859-1,本工程编码是UTF-8 故发送到服务器端会存在中文乱码
  解决方法有两种:

  第一种:把restTempalate 中  StringHttpMessageConverter 默认编码设置为UTF-8
  具体:使用 restTempalate 构造函数 public RestTemplate(List<HttpMessageConverter<?>> messageConverters) 传入 StringHttpMessageConverter 默认编码集是UTF-8 的转换器
  在 配置文件中配置:
  
<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请求头中设置 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 修改默认编码
 
HttpHeaders headers = new HttpHeaders();
		MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8");
		headers.setContentType(type);
		System.out.println(type);
		HttpEntity<String> requestEntity = new HttpEntity<String>(PostStrUtils.getPostStrFromMap(paramMap),  headers);
		
		String msg = restTemplate.postForObject(url,requestEntity, String.class);

		






public String sendToRest(String url, Map<String, String> paramMap) {
		logger.debug("====================start======================");
		logger.debug("调用接口-" + restUrl + url + " 入参:" + paramMap);


		/**
		 * restTempalate 字符串类型默认StringHttpMessageConverter做转码,而StringHttpMessageConverter的默认编码集是ISO8859-1,本工程编码是UTF-8 故发送到服务器端会存在中文乱码
		 * 解决方法有两种:
		 * 第一种:把restTempalate 中  StringHttpMessageConverter 默认编码设置为UTF-8 
		 * 具体:使用 restTempalate 构造函数 public RestTemplate(List<HttpMessageConverter<?>> messageConverters) 传入 StringHttpMessageConverter 默认编码集是UTF-8 的转换器
		 * 在 配置文件中配置:
		 *  <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请求头中设置 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 修改默认编码
		 * 
		 */
		
		//存在中文乱问题
//		String msg = restTemplate.postForObject(restUrl + url,
//				PostStrUtils.getPostStrFromMap(paramMap), String.class);
		
		//
		HttpHeaders headers = new HttpHeaders();
		MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8");
		headers.setContentType(type);
		System.out.println(type);
		HttpEntity<String> requestEntity = new HttpEntity<String>(PostStrUtils.getPostStrFromMap(paramMap),  headers);
		
		String msg = restTemplate.postForObject(url,requestEntity, String.class);

		logger.debug("调用接口-" + restUrl + url + " 返回:" + msg);
		logger.debug("====================end========================");

		return msg;
	}


分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    C#接收json数据后中文乱码解决方法

    C#接收Json格式数据,中文出现乱码解决方法

    SecureCRT中文乱码解决方法

    "SecureCRT中文乱码解决方法" SecureCRT 是一款功能强大且高效的 SSH 客户端,可以与多种协议进行连接,包括 SSH、Telnet 和 rlogin 协议。然而,在使用 SecureCRT 连接 Linux 服务器时,可能会出现中文乱码的情况...

    ZXing 2.1版GBK中文乱码解决办法

    ZXing 2.1版GBK中文乱码解决办法: zxing中扫瞄二维码图片,如果包含Gbk中文,乱码解决办法是修改DecodedBitStreamParser.h文件,在里面加入GBK的判断。 在2.1版本中,解码的定义不在这个类中了,挪到了...

    LINUX中文乱码解决方法

    ### Linux中文乱码解决方法 在使用Linux操作系统的过程中,用户可能会遇到中文显示出现乱码的情况。这种情况通常是由于系统编码设置不正确或者环境变量配置不当所导致的。本文将详细介绍如何解决Linux中的中文乱码...

    ubuntu spark中文乱码解决方法.docx

    Ubuntu Spark 中文乱码解决方法 Ubuntu Spark 中文乱码解决方法是指在 Ubuntu 操作系统中使用 Spark 时遇到的中文乱码问题的解决方案。该问题是由于 Spark 自带的 JRE 中没有合适的中文字体所致。 解决 Spark 乱码...

    Linux系统中文乱码解决完整方案

    本文档提供了两个解决方案:方法一是使用 Putty 代替 Secure Shell Client,修改窗口 Translation 中的 Received data assumed to be in which character set 值为 UTF-8,从而解决中文乱码问题。方法二是修改 Linux...

    php中url地址栏传参数中文乱码解决方法汇总

    php 中 URL 地址栏传参数中文乱码解决方法汇总 PHP 中 URL 地址栏传参数中文乱码解决方法汇总是指在 PHP 编程中,如何解决 URL 地址栏传参数中文乱码的问题。这个问题是由于浏览器和服务器之间的编码问题引起的。 ...

    redhat linux 中文乱码解决方法.doc

    ### Redhat Linux 中文乱码解决方法 #### 知识点一:Redhat Linux系统中文乱码问题概述 在使用Redhat Linux系统时,经常会出现中文显示为乱码的情况,这主要是由于系统的语言环境设置不正确或者缺少相应的中文字体...

    jspdf中文乱码解决方法.zip

    本教程将详细解释如何解决jspdf中文乱码的问题,帮助开发者顺利导出含有中文内容的PDF。 首先,我们需要理解jspdf的基本工作原理。jspdf是一个JavaScript库,它允许在浏览器端生成PDF文件。默认情况下,jspdf使用的...

    乱码解决 乱码解决 乱码解决 乱码解决 乱码解决

    二、乱码的解决方法 1. **确定编码格式**:首先,你需要确定原始文件的正确编码格式。可以使用诸如Notepad++、HexEdit等工具来查看文件的字节序列,从而推测其可能的编码。 2. **编码转换**:一旦确定了正确的编码...

    Maven发布Jar包中文乱码解决方法

    Maven发布Jar包中文乱码解决方法 Maven 是一个基于项目对象模型(Project Object Model,POM)的项目管理工具,广泛应用于 Java 项目的构建、测试和打包。然而,在使用 Maven 发布 Jar 包时,ometimes 中文字符会...

    Ubuntu中命令行中文乱码解决方法

    本文将详细解析Ubuntu中命令行中文乱码的原因,并提供一套有效的解决方法,帮助用户在不改变原有系统配置的基础上,实现命令行终端对中文的正常显示。 ### 原因分析 #### 字符编码冲突 Ubuntu默认使用的字符编码...

    putty 中文乱码解决方法

    ### Putty中文乱码解决方法 在日常工作中,我们经常需要用到Putty这款远程登录工具来连接服务器进行管理和操作。然而,在使用过程中可能会遇到中文显示乱码的问题,这不仅影响工作效率,还可能导致信息解读错误。...

    java c++ 通信之间的乱码解决方法

    解决跨语言通信的乱码问题,关键在于识别两端的编码方式,并在数据传输前进行正确的转换。在Java中,可以使用`getBytes`和`new String`配合指定编码进行转换;在C++中,通常需要手动处理编码转换,可能需要用到第三...

    soapUI输入中文显示为乱码,响应报文中文乱码问题解决方法.txt

    soapUI输入中文显示为乱码 响应报文中文乱码问题解决方法

    express中文乱码解决

    ### Express 中文乱码解决方法 在Web开发中,尤其是使用Node.js的Express框架进行后端开发时,处理中文字符可能会遇到乱码问题。这通常是因为客户端与服务器之间的编码设置不一致导致的。本文将详细介绍如何在...

    ISE Text Editor与notepad++之中文乱码解决方法

    某天,我用ISE自带的编辑器对它进行打开,发现里面的中文都是乱码。为了解决这个问题,折腾了一段时间。现在来看看是如何解决乱码问题的。

    Jfreechart 中文乱码解决方法

    Jfreechart 中文乱码的解决方法,网上共享的资源

    在eclipse中中文汉字乱码的解决方案

    Eclipse 中中文汉字乱码的解决方案 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),但是在使用过程中,用户可能会遇到中文汉字乱码的问题。本文将为大家分享解决 Eclipse 中中文汉字乱码的方案,以便大家...

Global site tag (gtag.js) - Google Analytics