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 的转换器
在 配置文件中配置:
第二种:使用 设置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); HttpEntityrequestEntity = new HttpEntity (PostStrUtils.getPostStrFromMap(paramMap), headers); String msg = restTemplate.postForObject(url,requestEntity, String.class); ===========================================================================================
public String sendToRest(String url, MapparamMap) { logger.debug("====================start======================"); logger.debug("调用接口-" + restUrl + url + " 入参:" + paramMap); /** * restTempalate 字符串类型默认StringHttpMessageConverter做转码,而StringHttpMessageConverter的默认编码集是ISO8859-1,本工程编码是UTF-8 故发送到服务器端会存在中文乱码 * 解决方法有两种: * 第一种:把restTempalate 中 StringHttpMessageConverter 默认编码设置为UTF-8 * 具体:使用 restTempalate 构造函数 public RestTemplate(List > messageConverters) 传入 StringHttpMessageConverter 默认编码集是UTF-8 的转换器 * 在 配置文件中配置: * * * * * 第二种:使用 设置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* **
** * ** * * * * * requestEntity = new HttpEntity (PostStrUtils.getPostStrFromMap(paramMap), headers); String msg = restTemplate.postForObject(url,requestEntity, String.class); logger.debug("调用接口-" + restUrl + url + " 返回:" + msg); logger.debug("====================end========================"); return msg; }